- ベストアンサー
エクセルでの照合について教えて下さい。
こんにちは いつもお世話になっています。 エクセルでのデータの照合について教えてください。 A列とB列に人名データがあります。 (1)A列のセルに対して、A列にあって、B列に無い人名の背景色を赤色に。 (2)B列のセルに対して、B列にあって、A列に無い人名の背景色を赤色に。 ソートをして比較しても良いのですがデータが多いので簡単にマクロを使いたいのです。 よろしくお願いします。
- みんなの回答 (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
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
A列を選択してから「ホーム」タブの「条件付き書式」をクリックし「新しルール」を選択します。 表示の画面でルールの種類では「数式を使用して・・・・」を選択し、下方の窓には=AND(A1<>"",COUNTIF(B:B,A1)=0)と入力して「書式」をクリックし、「塗りつぶし」のタブで赤色を設定しOKします。 同様にB列を選択してから上と同じように条件付き書式を設定します。その際に下方の窓には=AND(B1<>"",COUNTIF(A:A,B1)=0)と入力してから塗りつぶしの色を赤に設定します。
お礼
KURUMITO 様 ありがとうございました。 ヴァージョンを明記せずに申し訳ありませんでした。 御陰様で解決しました。 簡単で恐縮ですが、お礼申し上げます。
- keithin
- ベストアンサー率66% (5278/7941)
A列を列選択し 2003までのエクセルであれば書式メニューの条件付き書式を開始し セルの値が → 数式が に変更して =(A1<>"")*(COUNTIF(B:B,A1)=0) と記入して書式ボタンでセルのパターンを赤くすると出来ます。 ホントのB列は隣の列なんかじゃなく実際は別のシートにありましたと「実はこうでした」もよくあるご相談ですが,そういう時は ホントのB列を列選択し =(B1<>"")*(COUNTIF(INDIRECT("Sheet1!A:A"),B1)=0) として書式ボタンで赤く塗ります。
お礼
keithin 様 ありがとうございました。 御陰様で解決しました。 ヴァージョンを明記せずに申し訳ありませんでした。 条件付書式でできちゃうんですね。 大変勉強になりました。 簡単で恐縮ですが、お礼申し上げます。
お礼
kMashiMash 様 ありがとうございました。 御陰様で解決しました。 丁寧なマクロを作っていただいて大変助かりました。 とても勉強になりました。 長いコードを作っていただいたのに短いお礼で恐縮です。 大切に使わせていただきます。