web-dev-qa-db-ja.com

値が別の列の値と等しい場合の条件付き書式設定セル

A列とB列にデータがあります。 B列のデータは、ほとんどがAのデータの複製ですが、常にではありません。例えば:

A
Budapest
Prague
Paris
Bukarest
Moscow
Rome
New York

B
Budapest
Prague
Los Angeles
Bukarest

Aの値をB列で検索する必要があります。行が一致する場合、Aの行の背景色を赤などに変更する必要があります。

16
PeterInvincible

ここに式があります

数式に基づいて条件付き書式で新しいルールを作成します。次の式を使用して、$ A:$ Aに適用します

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


enter image description here

here 問題が発生した場合にダウンロードするサンプルシート


[〜#〜] update [〜#〜]
こちらも@ pnutsの提案で、完璧に機能します。

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


30
Marcel

数式は不要です。これは必要な数の列で機能しますが、同じワークシート内の列のみを比較します。

  1. 比較する列を選択します
  2. 条件付き書式設定をクリックします
  3. セルの強調表示ルールをクリックします
  4. [値の複製]をクリックします(デフォルトはOKです)。
  5. 重複が赤で強調表示されるようになりました

    • ボーナスのヒントとして、各行を色でフィルタリングして、列に一意の値を残すか、重複する値だけを残すことができます。
6
KERR

別のより簡単な解決策は、条件付き書式でこの式を使用することです(列Aに適用)。

=COUNTIF(B:B,A1)

よろしく!

5
async3

そのために必要なことは、単純なループだけです。
これは、小文字、大文字の不一致のテストを処理しません。これが探しているものとまったく異なる場合は、コメントしてください。修正できます。

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

3
peege

私はこれを調べていたので、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
1
Damian Duran

一番上の答えにコメントすることはできませんが、Excelでは実際に、い条件ロジックを追加せずにこれを行うことができます。

条件付き書式は自動的に適用であり、エラーではないすべての入力に適用されるため、次と同じ効果を得ることができます。

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

これとともに:

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

上記がデータに適用される場合、$ B $ 1:$ B $ 1000のセルに一致する場合、一致しない場合はエラーが返されるため、A1はフォーマットされます。

0
Jessica Rapson