Условное форматирование ячеек, если их значение равно любому значению другого столбца
У меня есть данные в столбцах 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, так как любое несоответствие вернет ошибку.