• 締切済み

エクセルでの検索方法について

エクセル上で、別の2つのシートにあるリストを照合したいと考えています。一方に100件のリストがあり、他方に10000件のリストがある場合、一度に照合できる方法がありますか? もしくは適当なソフトはありますか? 検索する対象は氏名か住所です。良い方法があれば教えてください。よろしくお願いします。

みんなの回答

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

こんばんは! VBAでの一例です。 ↓の画像のようにSheet1・Sheet2にデータがあり、1行目の項目名を入力するとその項目が両SheetにあるものをSheet3に表示するようにしてみました。 尚、Sheet1のデータを2行目から(1行目はタイトル行になっているとします)最終行までループしていますので データ量が少ない方をSheet1にしてください。 (もしSheet名がついているのであれば↓のコード内の sheet1 や sheet2 の部分を実際のSheet名に変更してください。 Alt+F11キー → VBE画面が出ますので、↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim str As String Dim ws1, ws2, ws3 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は適宜変更 Set ws2 = Worksheets("sheet2") '←こちらのSheet名も適宜変更 Set ws3 = Worksheets("sheet3") ws3.Cells.Clear ws1.Rows(1).Copy ws3.Activate ws3.Cells(1, 1).Select ActiveSheet.Paste Application.CutCopyMode = False str = InputBox("検索項目を入力してください。") If WorksheetFunction.CountIf(ws1.Rows(1), str) Then j = WorksheetFunction.Match(str, ws1.Rows(1), False) For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(ws2.Columns(j), ws1.Cells(i, j)) Then ws1.Rows(i).Copy ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste End If Next i End If Application.CutCopyMode = False ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End Sub 'この行まで ※ マクロを実行すると「インプットボックス」が表示されますので検索したい1行目の項目を入力します たとえば 氏名 のように・・・ 以上、参考になれば良いのですが。m(_ _)m

1216922
質問者

お礼

ご丁寧にご指導いただき誠にありがとうございまた。現時点では意味が理解できない状態ですが、少し詳しい知人に相談して試してみます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 仮にSheet1を100件リスト、Sheet2を10000件リストとして、A列を氏名とします。 (1)Sheet1の空き列の2行目に=IF(COUNTIF(Sheet2!A:A,$A2),"○","")を入力、下方向にコピー (2)Sheet1でオートフィルタし、空き列のダウンボタンで○を選択するとSheet2にあるデータ、○以外は無いデータが抽出できます

1216922
質問者

お礼

早速にご回答いただき誠にありがとうございました。小生には少々手に余る感じですが努力してみます。

関連するQ&A

専門家に質問してみよう