我有两列包含字符串,想知道一列中的字符串的哪些部分与另一列中的字符串有关系。我检查过这个解决方案比较两个文本单元格并在第三个单元格中显示差异 | 超级用户但它对我的问题不起作用。
在下面的屏幕截图中,我希望结果列包含字符串,Elementary
因为这是B2
与的区别A2
。我尝试使用=SUBSTITUTE(A2,B2,"")
基于上面链接中的解决方案,但公式所做的恰恰相反,在两列中显示公共字符串:
我怎样才能让它显示字符串差异(Elementary
)?
答案1
我怎样才能让它显示字符串差异(基本)?
这是一个自定义函数,
WORDDIF
它可以完成您想要的操作。要安装自定义功能...
- Alt+F11 打开 VBA 编辑器
- 从 VBA 菜单中,选择“插入”>“模块”
- 将以下代码粘贴到 VBA 编辑窗口中
返回 Excel,将此公式放入 C1 中
=WORDDIF(A1,B1)
代码:
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
来源https://www.mrexcel.com/forum/excel-questions/486708-compare-two-strings-find-difference.html