举例说明。
例如有表格如图:
要求将A列姓名取出后去除重复值,然后输出到C列。
第一步:点击开发工具-visual basic。选择sheet1,输入代码如下:
Sub 姓名去重()
Dim jgArr(1 To 100)
zz = 0
Sheets("sheet1")Activate
Set zd = CreateObject("scriptingdictionary")
hh = 2
Do While Cells(hh, 1) <> ""
If Not zdexists(Cells(hh, 1)Text) Then
zdAdd Cells(hh, 1)Text, zz
zz = zz + 1
jgArr(zz) = Cells(hh, 1)Text
End If
hh = hh + 1
Loop
'输出结果
Range("c2:c100000")ClearContents
For i = 1 To zz
Cells(2 + i - 1, 3) = jgArr(i)
Next i
End Sub
第二步:点击宏,选择去除重复宏。如图:
点击执行,结果如图:
如何用函数提取姓名的拼音。这是个有趣的问题。其实excel里没有这样的函数直接自动提取出汉字的拼音的。不过呢,凡事有例外,excel里藏着一个函数PHONETIC函数,这个函数是提取单元格里代表拼音信息的字符串的。也就是说单元格里必须有拼音信息。
因此呢,要提取拼音信息,要么单元格里有拼音了,要么呢只能写VBA去处理。当然不用VBA,也可以做个汉字和对应拼音的字库关系表,然后用VLOOKUP查找函数去查找。
这里介绍一种用PHONETIC函数结合word软件来实现提取拼音的方法。
1,复制姓名列,粘贴到word里
2,在word里,点击右下角粘贴智能标记,选择“仅保留文本”
3,选中word里的姓名文字(一般一次能一次性添加13组拼音,如果要添加拼音的汉字比较多,多选择几次多设置几次),开始-字体-拼音指南,拼音指南里,字号调大一些,确定
4,复制添加了拼音的汉字,粘贴到excel里某空列
5,用函数PHONETIC取得单元格里的拼音信息字符串,C2=PHONETIC(B2)
VBA:思路应该是利用汉字的ASCII编码与拼音的对应关系建立一个映射,不过同一个拼音对应的汉字的ASCII码并不完全连续,本来拼音的组合就多,还得一个个输ASCII码,这个工作量就很大了。反正我不会,会也懒得写,标记下坐等高人解答,哈哈哈。
工作表函数:楼主去找个拼音与汉字的对应表,把名字拆分成单个的字,利用vlookup查找,后面那个首字母用left函数就行,最后用连接符&连接起来就搞定了。
以上就是关于Excel (求助)用VBA自动提取不重复姓名全部的内容,包括:Excel (求助)用VBA自动提取不重复姓名、如何提取姓名里的拼音、怎么能把姓名变成姓的全称加名的首字母等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)