我有这个擅长的问题。我试图在2列之间找到匹配的文本,然后删除匹配的文本。范例
第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,将此公式复制到“结果”列中:
结果= WORDDIF(Column1Cell1,Column2Cell2)
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
归因,解决方案来自http://www.mrexcel.com/forum/excel-questions/486708-compare-two-strings-find-difference.html
这是一个名为WORDDIF的自定义函数,可以执行您想要的操作。
要在Windows中安装自定义功能...Alt + F11打开VBA编辑器从VBA菜单中,选择插入->模块
要在OS X中安装自定义功能...转到工具->宏-> Visual Basic编辑器从VBA菜单中,选择插入->模块
在VBA编辑窗口中粘贴以下代码
返回Excel,将此公式复制到“结果”列中:
结果= WORDDIF(Column1Cell1,Column2Cell2)
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
归因,解决方案来自http://www.mrexcel.com/forum/excel-questions/486708-compare-two-strings-find-difference.html