• ベストアンサー

エクセルでの照合について教えて下さい。

こんにちは いつもお世話になっています。 エクセルでのデータの照合について教えてください。 A列とB列に人名データがあります。 (1)A列のセルに対して、A列にあって、B列に無い人名の背景色を赤色に。 (2)B列のセルに対して、B列にあって、A列に無い人名の背景色を赤色に。 ソートをして比較しても良いのですがデータが多いので簡単にマクロを使いたいのです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんな感じで作ってみてはどうですか? このまま使う場合は、 全角スペースは半角スペースに「置換」して使ってください。 Sub あかいろ背景()      '設定   A列 = 1   B列 = 2      A列最初の行 = 1   B列最初の行 = 1   'データ数の取得   A列のデータ数 = Cells(65536, 1).End(xlUp).Row   B列のデータ数 = Cells(65536, 2).End(xlUp).Row   If Cells(65536, 1).Value Then A列のデータ数 = 65536   If Cells(65536, 2).Value Then B列のデータ数 = 65536      同じ名前あるフラグ = 0   '   '   '   '''''''''''''''''''''''''   '  ループ1   ''''''''''''''''''''''''   'A列のi行目にある名前が、B列になかったら、背景を赤くする   For i = A列最初の行 To A列のデータ数          'フラグの初期化     同じ名前あるフラグ = 0     '     '     'ループのネスト1     '''''''''''''''''''''''''     'A列のi行目にある名前が、B列のj行目にあったら、フラグ立てる     For j = B列最初の行 To B列のデータ数       If Cells(i, A列).Value = Cells(j, B列).Value Then 同じ名前あるフラグ = 1     Next j          'もし同じ名前がなかったら赤く塗る     If 同じ名前あるフラグ = 0 Then       Cells(i, A列).Interior.ColorIndex = 3       Cells(i, A列).Interior.Pattern = xlSolid     End If        Next i        '   '   '   '''''''''''''''''''''''''   '  ループ2   ''''''''''''''''''''''''   'B列のj行目にある名前が、A列になかったら、背景を赤くする   For j = B列最初の行 To B列のデータ数          'フラグの初期化     同じ名前あるフラグ = 0     '     '     'ループのネスト1     '''''''''''''''''''''''''     'A列のi行目にある名前が、B列のj行目にあったら、フラグ立てる     For i = A列最初の行 To A列のデータ数       If Cells(j, B列).Value = Cells(i, A列).Value Then 同じ名前あるフラグ = 1     Next i          'もし同じ名前がなかったら赤く塗る     If 同じ名前あるフラグ = 0 Then       Cells(j, B列).Interior.ColorIndex = 3       Cells(j, B列).Interior.Pattern = xlSolid     End If        Next j    End Sub

5goma
質問者

お礼

kMashiMash 様 ありがとうございました。 御陰様で解決しました。 丁寧なマクロを作っていただいて大変助かりました。 とても勉強になりました。 長いコードを作っていただいたのに短いお礼で恐縮です。 大切に使わせていただきます。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A列を選択してから「ホーム」タブの「条件付き書式」をクリックし「新しルール」を選択します。 表示の画面でルールの種類では「数式を使用して・・・・」を選択し、下方の窓には=AND(A1<>"",COUNTIF(B:B,A1)=0)と入力して「書式」をクリックし、「塗りつぶし」のタブで赤色を設定しOKします。 同様にB列を選択してから上と同じように条件付き書式を設定します。その際に下方の窓には=AND(B1<>"",COUNTIF(A:A,B1)=0)と入力してから塗りつぶしの色を赤に設定します。

5goma
質問者

お礼

KURUMITO 様 ありがとうございました。 ヴァージョンを明記せずに申し訳ありませんでした。 御陰様で解決しました。 簡単で恐縮ですが、お礼申し上げます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

A列を列選択し 2003までのエクセルであれば書式メニューの条件付き書式を開始し セルの値が → 数式が に変更して =(A1<>"")*(COUNTIF(B:B,A1)=0) と記入して書式ボタンでセルのパターンを赤くすると出来ます。 ホントのB列は隣の列なんかじゃなく実際は別のシートにありましたと「実はこうでした」もよくあるご相談ですが,そういう時は ホントのB列を列選択し =(B1<>"")*(COUNTIF(INDIRECT("Sheet1!A:A"),B1)=0) として書式ボタンで赤く塗ります。

5goma
質問者

お礼

keithin 様 ありがとうございました。 御陰様で解決しました。 ヴァージョンを明記せずに申し訳ありませんでした。 条件付書式でできちゃうんですね。 大変勉強になりました。 簡単で恐縮ですが、お礼申し上げます。