|
本帖最后由 ggmmlol 于 2019-1-19 12:34 编辑
单元格内重复单词的删除,解决这样的问题,最适合的工具就是 正则表达式,只需要寥寥数行代码即可解决。
.Pattern = "( \S+)(?= .*?\1\b)|\s+(?=\s|$)" '正则表达式(连续非空白字符串去重复)
完整代码如下:
- Sub test()
- With CreateObject("VBscript.regexp")
- .Global = True '全局匹配
- .IgnoreCase = True '忽略大小写
- .Pattern = "( \S+)(?= .*?\1\b)|\s+(?=\s|$)" '正则表达式(连续非空白字符串去重复)
- r = Cells(Rows.Count, 2).End(xlUp).Row
- arr = [b2].Resize(r - 1, 2)
- For i = 1 To r - 1
- arr(i, 1) = StrReverse(LTrim(.Replace(" " & StrReverse(arr(i, 1)), ""))) '重复项只保留第一个
- ' arr(i, 1) = LTrim(.Replace(" " & arr(i, 1), "")) '重复项只保留最后一个
- Next
- End With
- [d2].Resize(r - 1) = arr '从D2单元格开始输出结果。可根据需要,自行修改。
- End Sub
复制代码
附件在此:
单元格内去除重复的单词.rar
(27.38 KB, 下载次数: 58)
|
|