Условное форматирование ячеек, если их значение равно любому значению другого столбца

У меня есть данные в столбцах A и B Данные столбца B в основном дублируют данные A, но не всегда. Например:

A
Budapest
Prague
Paris
Bukarest
Moscow
Rome
New York

B
Budapest
Prague
Los Angeles
Bukarest

Мне нужно найти столбец A для значений в B Если строка соответствует, мне нужно изменить цвет фона строки в A на красный или что-то в этом роде.

Ответ 1

Вот формула

создать новое правило в условном формировании на основе формулы. Используйте следующую формулу и примените ее к $A: $A

=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))


enter image description here

здесь примерный лист для загрузки, если вы столкнулись с проблемами


UPDATE
вот предложение @pnuts, которое отлично работает:

=MATCH(A1,B:B,0)>0


Ответ 2

Никаких формул не требуется. Это работает на столько столбцов, сколько вам нужно, но будет сравнивать только столбцы на одном листе:

  • Выберите столбцы для сравнения
  • щелкните Условное форматирование
  • выберите команду "Выделить ячейки".
  • нажмите "Дублировать значения" (значения по умолчанию должны быть в порядке)
  • Дубликаты теперь выделены красным цветом

    • Бонус, вы можете фильтровать каждую строку по цвету, чтобы либо оставить уникальные значения в столбце, либо оставить только дубликаты.

Ответ 3

Другим более простым решением является использование этой формулы в условном форматировании (применимо к столбцу A):

=COUNTIF(B:B,A1)

Привет!

Ответ 4

Все, что вам нужно сделать, это простой цикл.
Это не обрабатывает тестирование для нижнего регистра, несоответствие верхнего регистра. Если это не совсем то, что вы ищете, комментарий, и я могу пересмотреть.

Если вы планируете изучать VBA. Это отличный старт.

ПРОВЕРЕНО:

Sub MatchAndColor()

Dim lastRow As Long
Dim sheetName As String

    sheetName = "Sheet1"            'Insert your sheet name here
    lastRow = Sheets(sheetName).Range("A" & Rows.Count).End(xlUp).Row

    For lRow = 2 To lastRow         'Loop through all rows

        If Sheets(sheetName).Cells(lRow, "A") = Sheets(sheetName).Cells(lRow, "B") Then
            Sheets(sheetName).Cells(lRow, "A").Interior.ColorIndex = 3  'Set Color to RED
        End If

    Next lRow

End Sub

EXAMPLE

Ответ 5

Я смотрел на это и любил подход от peege, используя цикл for! (потому что я изучаю VBA в данный момент)

Однако, если мы пытаемся сопоставить "любое" значение другого столбца, как насчет использования вложенных циклов, подобных следующему?

Sub MatchAndColor()

Dim lastRow As Long
Dim sheetName As String


sheetName = "Sheet1"            'Insert your sheet name here
lastRow = Sheets(sheetName).Range("A" & Rows.Count).End(xlUp).Row

For lRowA = 1 To lastRow         'Loop through all rows
    For lRowB = 1 To lastRow
        If Sheets(sheetName).Cells(lRowA, "A") = Sheets(sheetName).Cells(lRowB, "B") Then

        Sheets(sheetName).Cells(lRowA, "A").Interior.ColorIndex = 3  'Set Color to RED
    End If

Next lRowB
Next lRowA

End Sub

Ответ 6

Я не могу прокомментировать верхний ответ, но Excel на самом деле позволяет вам сделать это без добавления уродливой условной логики.

Условное форматирование автоматически применяется к любому вводу, который не является ошибкой, поэтому вы можете добиться того же эффекта, что и:

=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))

С этим:

= MATCH(A1,$B$1:$B$1000,0)))

Если вышеизложенное применяется к вашим данным, A1 будет отформатирован, если он соответствует какой-либо ячейке в $ B $ 1: $ B $ 1000, так как любое несоответствие вернет ошибку.