作者:绿色风
分类:
时间:2022-08-17
浏览:143
楼主 amulee |
Q:如何在两组姓名中找出同音不同字的姓名? A:在许多表格中,由于人名由不同的人输入,可能造成同一个员工姓名出现不同的字。由于大多数人采用拼音输入法,因而可能造成同音不同字的姓名,却又同时表示一个人。在统一这些表格的时候就需要将这些同音不同字的姓名统一起来。 本例利用一个自定义函数,将两组姓名中同音不同字的姓名找出来,并按照第一组姓名的顺序进行排列。如图所示:
本例利用了一个拼音函数PY,该函数功能是将汉子转为拼音。本例代码如下:
- Function 同音不同字(ByVal Rng1 As Range, ByVal Rng2 As Range)
- '初始化字典
- Dim i%, j%
- InitDictinary
- Dim Arr1, Arr2, d2 As Object, TempStr$, CmpStr1$, CmpStr2$, ArrJG() As String
- Arr1 = Rng1.Value
- Arr2 = Rng2.Value
- ReDim ArrJG(1 To UBound(Arr1), 1 To 1)
- Set d2 = CreateObject("scripting.dictionary")
- '记录2的拼音
- For i = 1 To UBound(Arr2)
- If Len(Trim(Arr2(i, 1))) > 0 Then d2(PY(Arr2(i, 1))) = Arr2(i, 1)
- Next i
- '遍历1,查找拼音相同的
- For i = 1 To UBound(Arr1)
- If Len(Trim(Arr1(i, 1))) > 0 Then
- TempStr = PY(Arr1(i, 1))
- If d2.exists(TempStr) Then
- TempStr = d2(TempStr)
- CmpStr1 = ""
- CmpStr2 = ""
- '逐字判断
- For j = 1 To Len(TempStr)
- CmpStr1 = CmpStr1 & "-" & Asc(Mid(Arr1(i, 1), j, 1))
- CmpStr2 = CmpStr2 & "-" & Asc(Mid(TempStr, j, 1))
- Next j
- If CmpStr1 <> CmpStr2 Then
- ArrJG(i, 1) = TempStr
- End If
- End If
- End If
- Next i
- 同音不同字 = ArrJG
- End Function
附件参考: 同音不同字.rar |
2楼 eliane_lei |
进来学习,谢谢分享 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一