• ベストアンサー

二つのリストの様々な比較

よろしくお願いします 1行目にはタイトルが入っています A列とB列にそれぞれデータが入っています。 仮にA2~A10まで 1 2 3 4 5 6 7 8 9   B2~B6まで 1 3 4 5 7 と入っているとします この二つのリストの中身をC列に記入して Countifを使うと 1または2が出てくるので 1のときは A列またはB列どちらかにあるデータ (2,6,7,8,9) 2のときは A列、B列どちらにもあるデータ (1,3,4,5)ということはわかりますが さらに A列のみにしか無いデータ (2,6,8,9) B列のみにしか無いデータ (7) を調べるにはどうしたらよいでしょうか? できればマクロで 4種類のデータを一覧でみるようにしたいのですが よろしく御教授願います

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

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

C列にはA列のみに入っているデータ、D列にはB列のみに入っているデータ、E列にはA列もしくはB列にも入っているデータ、F列にはA列にもB列にも入っているデータを記入していくマクロです。以下をコピーして、実行してみてください。 Private Sub MakeList() Dim RowNum(6) As Long Dim i, j As Long 'Aのみ、Bのみ、AまたはB、AかつBの列に元々入っていた値を消去(初期化) For i = 3 To 6 RowNum(i) = 2 For j = 2 To Cells(65536, i).End(xlUp).Row Cells(j, i).Value = "" Next j Next i 'A列に入っている数字がB列に入っているかどうか確認 For RowNum(1) = 2 To Cells(65536, 1).End(xlUp).Row If Cells(RowNum(1), 1).Value <> "" Then Cells(RowNum(5), 5).Value = Cells(RowNum(1), 1).Value 'A列に入っている数字は必ず「AまたはB」列 (E列)に入る。 RowNum(5) = RowNum(5) + 1 With ActiveSheet.Columns(2) Set x = .Find(Cells(RowNum(1), 1).Value, LookAt:=xlWhole) If x Is Nothing Then 'A列のある行の数字がB列にない場合、「Aのみ」列 (C列)に入る Cells(RowNum(3), 3).Value = Cells(RowNum(1), 1).Value RowNum(3) = RowNum(3) + 1 Else 'A列のある行の数字がB列にある場合、「AかつB」列 (F列)に入る Cells(RowNum(6), 6).Value = x.Value RowNum(6) = RowNum(6) + 1 End If End With End If Next RowNum(1) 'B列に入っている数字がA列に入っているかどうか確認 For RowNum(2) = 2 To Cells(65536, 2).End(xlUp).Row If Cells(RowNum(2), 2).Value <> "" Then With ActiveSheet.Columns(1) Set x = .Find(Cells(RowNum(2), 2).Value, LookAt:=xlWhole) If x Is Nothing Then 'B列のある行の数字がA列にない場合、「Bのみ」列 (D列)に入り、かつ、「AまたはB」列 (E列)に追記される。 Cells(RowNum(4), 4).Value = Cells(RowNum(2), 2).Value Cells(RowNum(5), 5).Value = Cells(RowNum(2), 2).Value RowNum(4) = RowNum(4) + 1 RowNum(5) = RowNum(5) + 1 End If End With End If Next RowNum(2) End Sub

ennkai
質問者

お礼

ご解答ありがとうございます! 自宅PCで試したところ 上手く走りました! 自分でマクロを組む勉強を始めてはいるのですが まだ自動記録や簡単な関数くらいしか 使えないので ただただありがたいです。 時間を掛けてじっくり内容を勉強したいとおもいます ありがとうございました

関連するQ&A