前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >删除包含多行文本的单元格中重复文本的VBA自定义函数

删除包含多行文本的单元格中重复文本的VBA自定义函数

作者头像
fanjy
发布2024-07-05 13:09:02
970
发布2024-07-05 13:09:02
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA,自定义函数

如下图1所示,在单元格A1中包含多行文本,现在要求删除这些文本中开头单词相同的行,仅保留第1行,结果如图1单元格B1中所示。

图1

可以使用VBA编写一个自定义函数来实现。

打开VBE,插入一个标准模块,输入代码:

代码语言:javascript
复制
Public Function fnUnique(rng As Range)
 Dim dict As Object
 Dim dOut As Object
 Dim val As Variant
 Dim var As Variant
 Dim i As Integer
 Dim sKey As String
 
 Set dict = CreateObject("scripting.dictionary")
 Set dOut = CreateObject("scripting.dictionary")
 
 dict.CompareMode = vbTextCompare
 dOut.CompareMode = vbTextCompare
 
 val = rng.Value & ""
 var = Split(val, Chr(10))
 
 On Error Resume Next
 
 For i = 0 To UBound(var)
   sKey = Split(var(i))(0)
   If dict.exists(sKey) = False Then
     dict.Add Key:=sKey, Item:=var(i)
   Else
     dOut.Add Key:=var(i), Item:=var(i)
   End If
 Next
 
 For i = 1 To dOut.Count
   val = Replace$(val, dOut.items()(i - 1), "")
 Next
 
 If Right$(val, 1) = Chr(10) Then
   val = Left$(val, Len(val) - 1)
 End If
 
 fnUnique = val
 
 Set dict = Nothing
 Set dOut = Nothing
End Function

在单元格B1中输入公式:

=fnUnique(A1)

然后,选取单元格B1,单击功能区“开始”选项卡中的“自动换行”按钮,即可获得结果。

注:本文示例收集自vbaexpress.com,供有兴趣的朋友研究。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档