У меня есть два столбца со строками и я хочу узнать, какие части строки из одного столбца связаны с другим столбцом. Я проверил это решениеСравните 2 текстовые ячейки и покажите разницу в третьей ячейке | Super Userно это не помогает решить мою проблему.
На снимке экрана ниже я хочу, чтобы в столбце результата была строка, 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