Note: The other languages of the website are Google-translated. Back to English

Как сравнить две строки на сходство или выделить различия в Excel?

В некоторых случаях вам может потребоваться только сравнить две соседние ячейки строк и отметить их сходство или различие в Excel. В этой статье представлены два метода достижения этой цели.

Сравните две строки с формулой
Сравните две строки на сходство или выделите различия с кодом VBA


Сравните две строки с формулой

Как показано на скриншоте ниже, если вы просто хотите узнать, совпадают ли сравниваемые строки или нет, вы можете применить следующую формулу.

1. Выберите пустую ячейку C2, введите формулу = ТОЧНЫЙ (A2; B2) в панель формул и нажмите клавишу Enter. Смотрите скриншот:

Внимание: В формуле A2 и B2 - это ячейки, содержащие сравниваемые строки.

2. Продолжайте выбирать ячейку результата, затем перетаскивайте маркер заполнения к ячейкам, пока не получите все сравниваемые результаты.

Результат FALSE означает, что сравниваемые строки различны, а результат TRUE указывает, что две сравниваемые строки совпадают. Смотрите скриншот:


Сравните две строки на сходство или выделите различия с кодом VBA

Если вы хотите сравнить две строки и выделить сходства или различия между ними. Следующий код VBA может вам помочь.

1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте следующий код в окно кода.

Код VBA: сравнить две строки столбца на предмет сходства или выделить различия

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Len(xCell1.Value2)
            For J = 1 To xLen
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For
            Next J
            If Not xDiffs Then
                If J <= Len(xCell2.Value2) And J > 1 Then
                    xCell2.Characters(1, J - 1).Font.Color = vbRed
                End If
            Else
                If J <= Len(xCell2.Value2) Then
                    xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                End If
            End If
        End If
    Next
    Application.ScreenUpdating = True
End Sub

3. нажмите F5 ключ для запуска кода. Во-первых Kutools for Excel в диалоговом окне выберите первый столбец текстовых строк, который необходимо сравнить, а затем щелкните значок OK кнопку.

4. Затем второй Kutools for Excel появится диалоговое окно, выберите вторую строку столбца и нажмите кнопку OK кнопку.

5. В последний Kutools for Excel диалоговом окне, если вы хотите сравнить строки на предмет сходства, щелкните Да кнопка. И чтобы выделить различия сравниваемых строк, нажмите кнопку Нет кнопка. Смотрите скриншот:

Затем вы можете увидеть сравниваемые результаты, как показано на скриншоте ниже.


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (19)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Уважаемый сэр, Большое спасибо за ваш код VBA. Это очень полезно. На самом деле у меня нет никаких знаний о кодировании. Итак, даже изменить небольшую часть кода в соответствии с моим требованием я беспомощен. У меня есть одна просьба об этом коде, чтобы сделать его более эффективным и удобным для пользователя. Не могли бы вы мне помочь?? Основная цель приведенного выше кодирования — найти и выделить различия между данными в двух столбцах для удобства поиска. Но это кодирование немного сложно с точки зрения объективности. Потому что он учитывает «пробелы» между содержимым и выделяет все данные, даже если строки одинаковы. Итак, если мы можем сравнить данные без пробелов, то мы можем отфильтровать часть выделенных данных. Кроме того, вместо того, чтобы выделять только строки, которые не похожи, он выделяет все данные, начиная с первой отличающейся строки и заканчивая данными до конца ячейки. Следовательно, я хотел бы завершить свою просьбу ниже 2 пунктов. 1) отредактируйте кодировку, чтобы сравнить ячейки без учета пробелов 2) отредактируйте кодировку таким образом, чтобы она могла выделять только разные строки, но не выделяла весь параграф с первой точки другой строки. Большое спасибо за помощь. С уважением, Сурья.
Этот комментарий был сведен к минимуму модератором на сайте
у меня тот же запрос, что и у сурьятеджи.
2) отредактируйте кодировку таким образом, чтобы она могла выделять только разные строки, но не выделяла весь параграф с первой точки другой строки.
Этот комментарий был сведен к минимуму модератором на сайте
Приведенная выше доза кода не работает, если какая-либо ячейка содержит формулу.
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Мне нужно знать, как я могу идентифицировать строки с одинаковым текстовым форматом, чтобы я мог связать счет со всеми этими строками. Например, если у меня есть 1,000 ячеек с разным содержимым, я хочу разделить те, которые имеют формат 042-XXX-XX-00, чтобы связать их с номером счета.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте
Как скопировать столбец 1 рядом с столбцом 2, если один или несколько элементов в столбце 1 похожи или идентичны одному или нескольким элементам в столбце 2?
Извините, но я некоторое время работаю с Excel VBA и не могу найти ответ на этот вопрос.
Заранее благодарю за ответ.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте
Как скопировать столбец 1 рядом с столбцом 2, если один или несколько элементов в столбце 1 похожи или идентичны одному или нескольким элементам в столбце 2?
Извините, но я некоторое время работаю с Excel VBA и не могу найти ответ на этот вопрос.
Заранее благодарю за ответ.
Этот комментарий был сведен к минимуму модератором на сайте
Очень полезный скрипт! спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Как я могу получить число разницы между двумя строками?

Пример: "123456" и "213456" ==> 2 отличия
Этот комментарий был сведен к минимуму модератором на сайте
просто хочу сказать спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Я так надеялся, что это сработает. Похоже, что он сравнивает целые ячейки, а не символы внутри ячеек. Простое сравнение Кэнди в одной камере с Энди в другой не находит сходства. И когда я сравниваю для различий, все имя Энди выделено красным цветом.
Этот комментарий был сведен к минимуму модератором на сайте
Во-первых... СПАСИБО ребятам из Extend Office за хороший код!!

Попробуйте эту модификацию. Он просто расширяет цикл проверки каждого символа, включая форматирование цвета шрифта, добавляет значение по умолчанию «Черный», а также сравнивает символы с самой длинной из двух сравниваемых ячеек.

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Application.WorksheetFunction.Max(Len(xCell1.Value2), Len(xCell2.Value2))
            For J = 1 To xLen
                xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbBlack
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then
                    If Not xDiffs Then
                        If J <= Len(xCell2.Value2) And J > 1 Then
                            xCell2.Characters(1, J - 1).Font.Color = vbRed
                        End If
                    Else
                        If J <= Len(xCell2.Value2) Then
                            xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                        End If
                    End If
                End If
            Next J
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
СПАСИБО! это как раз то, что мне было нужно!
Этот комментарий был сведен к минимуму модератором на сайте
Чтобы избежать каких-либо проблем этого кода с пробелами, которые должны быть в значении ASCII 32 или 160 (особенно если строка исходит из HTML), вам необходимо включить тестовую строку 46 в цикл if endif, как показано ниже:
Если нет ((Asc(xCell1.Characters(J, 1).Text) = 32 Или Asc(xCell1.Characters(J, 1).Text) = 160) И (Asc(xCell2.Characters(J, 1).Text).Text ) = 32 Или Asc(xCell2.Characters(J, 1).Text) = 160)) Тогда
(строка 46, если не xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text, затем выход для)
End If

Тем не менее спасибо за код.
Этот комментарий был сведен к минимуму модератором на сайте
Как добавить это правильно? Я получаю сообщение об ошибке, когда пытаюсь заменить строку 46. Спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
в вашем примере слова «давайте попробуем» похожи, но ваш код не может их выделить.
Этот комментарий был сведен к минимуму модератором на сайте
Confrontando ла челла VIA ROMA 1 с ла челла VIA RROMA 1 il programma evidenzia in rosso sia RROMA che 1. Non si può fare in modo che evidenzi solo la lettera diversa e quindi R? Грейзи
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Как я могу отредактировать код так, чтобы он сравнивал 2 столбца и выделял различия в обоих столбцах?
Например:
Колонка 1
A1,A2,A3,A4: выделить A1 и A3
Колонка 2
A2,A4,A5,A6,A7: Highlight A5,A6,A7
Этот комментарий был сведен к минимуму модератором на сайте
Привет Лала,
Было бы неплохо, если бы вы могли загрузить скриншот ваших данных и результат, который вы хотите получить.
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL