Excel 在字符串中查找重复文本并将其删除

Excel 在字符串中查找重复文本并将其删除,excel,match,trim,vlookup,duplicate-data,Excel,Match,Trim,Vlookup,Duplicate Data,我有这个问题。我试图在两列之间找到匹配的文本,然后删除匹配的文本。范例 第1栏: John Romeo 第2栏: John Romeo 16 Smith Street 结果: 16 Smith Street “结果”列是我想要的文本。这里有一个名为WORDDIF的自定义函数,它可以执行您想要的操作 要在Windows中安装自定义功能。。。 Alt+F11打开VBA编辑器 从VBA菜单中,选择插入->模块 要在OS X中安装自定义功能。。。 转到工具->宏->Visual Basic编辑器

我有这个问题。我试图在两列之间找到匹配的文本,然后删除匹配的文本。范例

第1栏:

John Romeo
第2栏:

John Romeo 16 Smith Street
结果:

16 Smith Street 

“结果”列是我想要的文本。

这里有一个名为WORDDIF的自定义函数,它可以执行您想要的操作

要在Windows中安装自定义功能。。。 Alt+F11打开VBA编辑器 从VBA菜单中,选择插入->模块

要在OS X中安装自定义功能。。。 转到工具->宏->Visual Basic编辑器 从VBA菜单中,选择插入->模块

在VBA编辑窗口中粘贴下面的代码

返回Excel,将此公式复制到“结果”列中:

结果=单词DIF(第1列单元格1,第2列单元格2)

函数字DIF(rngA作为范围,rngB作为范围)作为字符串
Dim WordsA作为变体,WordsB作为变体
尺寸ndxA为长,ndxB为长,strTemp为字符串
WordsA=拆分(rngA.Text,“”)
WordsB=拆分(rngB.Text,“”)
对于ndxB=LBound(WordsB)到UBound(WordsB)
对于ndxA=LBound(WordsA)到UBound(WordsA)
如果StrComp(WordsA(ndxA)、WordsB(ndxB)、vbTextCompare)=0,则
WordsA(ndxA)=vbNullString
退出
如果结束
下一个ndxA
下一个ndxB
对于ndxA=LBound(WordsA)到UBound(WordsA)
如果WordsA(ndxA)vbNullString,则strTemp=strTemp&WordsA(ndxA)&“”
下一个ndxA
WORDDIF=修剪(strTemp)
端函数

对于属性,解决方法是使用
SUBSTITUTE
函数。此外,你可以在网上轻松找到相关信息。谢谢。但这对我不起作用。我正在阅读论坛,无法阅读;我什么也找不到。既然内置的
SUBSTITUTE
REPLACE
函数已经在做这件事了,他们为什么还需要自定义项呢?嘿,道格,你介意告诉我使用SUBSTITUTE的方法吗?干杯
Function WORDDIF(rngA As Range, rngB As Range) As String

Dim WordsA As Variant, WordsB As Variant
Dim ndxA As Long, ndxB As Long, strTemp As String

WordsA = Split(rngA.Text, " ")
WordsB = Split(rngB.Text, " ")

For ndxB = LBound(WordsB) To UBound(WordsB)
    For ndxA = LBound(WordsA) To UBound(WordsA)
        If StrComp(WordsA(ndxA), WordsB(ndxB), vbTextCompare) = 0 Then
            WordsA(ndxA) = vbNullString
            Exit For
        End If
    Next ndxA
Next ndxB

For ndxA = LBound(WordsA) To UBound(WordsA)
    If WordsA(ndxA) <> vbNullString Then strTemp = strTemp & WordsA(ndxA) & " "
Next ndxA

WORDDIF = Trim(strTemp)

End Function