• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで2つの表から「合致する品目」「合致しない品目」を、抜き出す方法は?)

エクセルで2つの表から「合致する品目」「合致しない品目」を、抜き出す方法は?

このQ&Aのポイント
  • エクセルで2つの表から「合致する品目」「合致しない品目」を、抜き出す方法について紹介します。
  • エクセルのイベント来場者リスト(名前だけ)リストAとOBリスト(名前だけ)リストBという2つのリストがあります。この2つのリストを比較し、合致する品目と合致しない品目を抜き出す方法について解説します。
  • エクセルを使って、イベント来場者リスト(名前だけ)リストAからOBリスト(名前だけ)リストBと合致する項目と合致しない項目を簡単に抽出する方法について説明します。

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

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

リストAをシート1、リストBをシート2としてどちらのシートにもA列に名前が載っているとします。 シート1のB1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",IF(COUNTIF(Sheet2!A:A,A1),"合致名前","不合致名前"))

gca00460
質問者

お礼

ありがとうございます。バッチリです!

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! すでに回答は出ていますので 参考程度で目を通してみてください。 一例です。 ↓の画像の左がBOOK1で右がBOOK2になります。 BOOK1のD列を作業用の列とさせていただいています。 D2セルに =IF(COUNTIF([Book2]Sheet1!A$2:A$1000,A2),1,"") そして、B2・C2セルは配列数式になってしまいますので この画面からコピー&ペーストしただけではエラーになると思います。 貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので Shift+Ctrl+Enterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 B2セルは =IF(COUNT($D$2:$D$1000)<ROW(A1),"",INDEX($A$2:$A$1000,SMALL(IF($D$2:$D$1000=1,ROW($1:$999)),ROW(A1)))) C2セルは =IF(COUNTA($A$2:$A$1000)-COUNT($D$2:$D$1000)<ROW(A1),"",INDEX($A$2:$A$1000,SMALL(IF($D$2:$D$1000<>1,ROW($1:$999)),ROW(A1)))) として、Shift+Ctrl+Enterキーで確定です。 最後にB2~D2セルを範囲指定し、D2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 尚、数式は1000行目まで対応できるようにしています。 以上、長々と書きましたが、参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

こんにちは。 VBAによる一例です。 前提として、 A列の2行目以降: イベント来場者リスト(名前だけ) B列の2行目以降: OBリスト(名前だけ) C列の2行目以降: リストAの中で、Bと合致する項目を抽出 D列の2行目以降: リストAの中で、Bと合致しない項目を抽出 Sub test()   Dim myRng1 As Range, myRng2 As Range, c As Range   Dim i As Long, j As Long   Dim myAns As Variant   Set myRng1 = Range("A2", Cells(Rows.Count, "A").End(xlUp))   Set myRng2 = Range("B2", Cells(Rows.Count, "B").End(xlUp))   i = 2:  j = 2   For Each c In myRng1     myAns = Application.Match(c.Value, myRng2, 0)     If IsError(myAns) = False Then       Cells(i, "C").Value = c.Value       i = i + 1     Else       Cells(j, "D").Value = c.Value       j = j + 1     End If   Next c   Set myRng1 = Nothing   Set myRng2 = Nothing End Sub

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

イベント来場者リストがA2セルからA100セルの範囲内に入力されているなら、以下の式でOBリストに含まれているイベント来場者を抽出することができます。 =INDEX(A:A,SMALL(INDEX(ISNA(MATCH($A$2:$A$100,OBリスト範囲,0))*1000+ROW($A$2:$A$100),),ROW(A1)))&"" 同様にOBリストに含まれていない人は上記の数式の「ISNA」の部分を「ISNUMBER」に置換した数式になります

  • mhassy
  • ベストアンサー率43% (16/37)
回答No.2

ご質問の「表題」は、合致する品目についてとご記入されていますが、ご質問の説明には品目に関する記述が見当たりません・・・ 仮に、品目での一致チェック方法であれば、重複した品の「名称」を考慮する必要が少ないと考えられるため、質問に詳細を記入してさえいれば、スマートな方法の紹介が出来そうだとも思えます。 実際のご質問の文章は「品目」とは無関係な「名前」の一致について記述されています。 名前の場合、姓名なのか? 姓だけなのか? 姓名の間にスペースがあるのか? など、「比較するデータそれぞれ」が正規化されているのかどうかによって、ご希望の「スマートな比較」手段に違いが出ることをご存知ないご様子です。 「山田太郎」と「山田 太郎」は、そのままの比較では「同じ」と認識できません。 正規化を行い、同じ条件で項目を比較できるように編集することが求められます。 また、特にOBリストであれば「同姓同名」が存在することも考慮すべき点です。 比較する片割れの状態についての説明が見当たりません。 OBリスト内の重複の扱いについて、どこにも記述が見当たりません。 表題にある品目の比較ではなく、名前(=曖昧)の比較手段についてのご質問ですが、比較すべきA・Bのリストの「状態説明」が欠如しているように感じます。 「スッキリ」とか「「スマート」などの注文をするわりに、必須な「前提条件・状態」のご説明も無く、しかも表題と異なるご質問内容です。 ご質問をきちんと整理することをお勧めしたいと考えます。

関連するQ&A