ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何剔除单元格中重复的字符?

如何剔除单元格中重复的字符?

作者:绿色风 分类: 时间:2022-08-17 浏览:155
楼主
apolloh
Q:单元格中存在多个不同的重复字符,如何重复的字符剔除,仅保留其中的一个?
A:可使用自定义函数,代码如下:
  1. '本函数需引用 Microsoft Scripting Runtime
  2. Function 去除重复的字符(R As Range) As String
  3.     Dim DT As New Dictionary, i As Integer, strO As String, ary()
  4.     On Error Resume Next
  5.     Application.Volatile
  6.     strO = R.Value
  7.     For i = 1 To Len(strO)
  8.         DT.Add Mid(strO, i, 1), 0
  9.     Next i
  10.     去除重复的字符 = Join(DT.Keys, "")
  11. End Function

自定义函数-去除重复的字符.rar

引用Microsoft Scripting Runtime的方法,请参见动画演示:

 
2楼
gvntw
补充说明:Dictionary (字典)对象是 “Scripting   Runtime   Library” 的一部分,它将任何形式的数据条目存储在数组中。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目。
使用 CreateObject 函数可以不添加引用。
Set DT=CreateObject("Scripting.Dictionary")

3楼
wise
DT.Add Mid(strO, i, 1), 0

可以写成:
DT.Add Mid(strO, i, 1), nothing
  DT.Add Mid(strO, i, 1), ""
  DT( Mid(strO, i, 1))=""
4楼
水星钓鱼
字典对象很牛。试了下在处理数据有效性中很有用。
5楼
水星钓鱼
Q:如何用字典顺序提取字符串中的不重复字符组合成新的字符串?
A:以字符串“ExExcecellttiipp”为例,提取后的字符串为"Exceltip"
代码如下:
主要利用字典的Key不能重复的特性,结合错误处理语句和Join函数合并不重复的字符。
  1. Sub Dic()
  2.     On Error Resume Next
  3.     Dim oDic As Object
  4.     Dim sStr As String
  5.     Dim i As Long
  6.     sStr = "ExExcecellttiipp"
  7.     Set oDic = CreateObject("scripting.dictionary")
  8.     With oDic
  9.         For i = 1 To Len(sStr)
  10.             .Add Mid(sStr, i, 1), ""
  11.         Next
  12.         MsgBox Join(.Keys, "")
  13.     End With
  14. End Sub
6楼
kevinchengcw
这个要顶
7楼
初学者2012
学习了****

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap