查找字符串中区分一个单元格中的字符串与另一个单元格中的字符串的部分

查找字符串中区分一个单元格中的字符串与另一个单元格中的字符串的部分

我有两列包含字符串,想知道一列中的字符串的哪些部分与另一列中的字符串有关系。我检查过这个解决方案比较两个文本单元格并在第三个单元格中显示差异 | 超级用户但它对我的问题不起作用。

在下面的屏幕截图中,我希望结果列包含字符串,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

相关内容