A
列とB
列にデータがあります。 B
列のデータは、ほとんどがA
のデータの複製ですが、常にではありません。例えば:
A
Budapest
Prague
Paris
Bukarest
Moscow
Rome
New York
B
Budapest
Prague
Los Angeles
Bukarest
A
の値をB
列で検索する必要があります。行が一致する場合、A
の行の背景色を赤などに変更する必要があります。
ここに式があります
数式に基づいて条件付き書式で新しいルールを作成します。次の式を使用して、$ A:$ Aに適用します
=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))
here 問題が発生した場合にダウンロードするサンプルシート
[〜#〜] update [〜#〜]
こちらも@ pnutsの提案で、完璧に機能します。
=MATCH(A1,B:B,0)>0
数式は不要です。これは必要な数の列で機能しますが、同じワークシート内の列のみを比較します。
重複が赤で強調表示されるようになりました
別のより簡単な解決策は、条件付き書式でこの式を使用することです(列Aに適用)。
=COUNTIF(B:B,A1)
よろしく!
そのために必要なことは、単純なループだけです。
これは、小文字、大文字の不一致のテストを処理しません。これが探しているものとまったく異なる場合は、コメントしてください。修正できます。
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
私はこれを調べていたので、forループを使用したpeegeからのアプローチが大好きでした! (私は現在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
一番上の答えにコメントすることはできませんが、Excelでは実際に、い条件ロジックを追加せずにこれを行うことができます。
条件付き書式は自動的に適用であり、エラーではないすべての入力に適用されるため、次と同じ効果を得ることができます。
=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))
これとともに:
= MATCH(A1,$B$1:$B$1000,0)))
上記がデータに適用される場合、$ B $ 1:$ B $ 1000のセルに一致する場合、一致しない場合はエラーが返されるため、A1はフォーマットされます。