• 締切済み

エクセルでデータの検索

エクセル2000ですが、 シート1に約4000件のデータ、シート2に約4300件の データがあります。 データの構成は同じで2列目 のコードで同じものかどうか区別できます。 シート1とシート2を比較して、同じでない300件を 探し出したいのですが、どうすれば簡単に出来るで しょうか。 月に1回このような作業が起きます。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

VBAでやって見ました。 Sheet1、Sheet2をそれぞれB列で昇順にソートします。 ツール-マクロ-VBEで白紙的画面が出ます。 そのメニューで挿入-標準モジュールをクリックし その出てきた白紙の画面に下記をコピーし貼りつける。 変える所は第4行目から3行のSheet1,2、3を 自分の場合に合わせて変更します。Shhet3が結果の出るシートです。 F5キーを押して実行する。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim sh3 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") Set sh3 = Worksheets("sheet3") '---- i = 2: j = 2: k = 2 p01: If sh1.Cells(i, "B") = "" Then sh1.Cells(i, "B") = String(10, Chr(255)) If sh2.Cells(j, "B") = "" Then sh2.Cells(j, "B") = String(10, Chr(255)) '-----比較 If sh1.Cells(i, "B") = sh2.Cells(j, "B") Then GoTo eql If sh1.Cells(i, "B") > sh2.Cells(j, "B") Then GoTo hgh If sh1.Cells(i, "B") < sh2.Cells(j, "B") Then GoTo low '------等しい場合 eql: If sh1.Cells(i, "B") = String(10, Chr(255)) Then GoTo pend '終了 i = i + 1: j = j + 1 'sheet1,sheet2とも1行下へ GoTo p01 '------大の場合 hgh: sh3.Cells(k, "B") = sh2.Cells(j, "B") '小を第3シートへ(AA) j = j + 1 'sheet2の1行下へ k = k + 1 '1行下へ GoTo p01 '-------小の場合 low: sh3.Cells(k, "B") = sh1.Cells(i, "B") '小を第3シートへ(BB) i = i + 1 'Sheet1の1行下へ k = k + 1 '1行下へ GoTo p01 '-----終了 pend: sh1.Cells(i, "B") = "" sh2.Cells(j, "B") = "" End Sub 移したい項目が複数あれば、AA、BBの行の次行に AAの次には sh3.Cells(k, "C") = sh1.Cells(i, "C") BBの次には sh3.Cells(k, "C") = sh2.Cells(i, "C") (C列を移したい、の例)のように、直ぐ次行に追加すると出きる。

回答No.3

単純にどれが違うか、がわかるだけでよいのなら、#1の方の応用で、 シート2のデータのある列に条件付き書式を設定して、背景を赤にするとかすれば、いいんじゃないでしょうか。 具体的には、シート2のデータのある列を範囲指定して、条件付き書式で「数式が」「=(COUNTIF(シート1!B:B,B1)=0)」と入力して、書式を設定すれば、一致しないデータが違う書式で表示され一目瞭然ですが。

回答No.2

ACCESSの不一致クエリを利用すると、便利ではないでしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 シート2のどこかの列を使用します。 その列の先頭行(2行目とする)に、 =IF(COUNTIF(シート1!B:B,B2),"","×") これで、"×"が付いた行のデータがシート1に存在しないデータになります。 あとは、オートフィルタなどで。

yaba77
質問者

補足

ありがとうございます。 早速この通りにやってみた つもりですが、「値の更新・シート1」と表示された ダイアログ?が表示されて、この式を入力したセルには 「#VALUE」がひょうじされます。 どかが違っているのでしょうか?

関連するQ&A

  • Excelデータの照合

    Excelデータの照合 こちらでも色々調べさせて頂いたのですが、自分のデータにうまくあてはめられず困っています。 Excelの元データ、入力データがあります。 元データが正規のデータで、入力データにモレがないか、ミスがないかをチェックする為に 照合をしたいんですけど、どうやったらうまく出来るかわかりません。 是非ご教授下さい。 元データ、入力データ共に2列あり、どちらも A列・・・コードナンバー B列・・・コードナンバーに対応する金額 が入力されています。 これは今現在は同一シート内に抜き出してありますが、元は別シートです。 なので別シートにあるものとして回答頂いても結構です。 入力データの中から、元データのA列、B列共に一致するものだけを抽出することは出来ますか? 不一致もしくは該当するデータがないものと、一致しているものが区別で切れば形式は何でもOKです。 (作業列を増やすとか、色分けするとか、文字で表示するとか) 出来ればVBAやマクロを使わず関数のみでお願いします。 検索を使うからVLOOKUP? 複数条件だからIF?? と色々考えましたが、2つセットで検索をかけるのがどうしても出来ず・・・(-_-;) よろしくお願いします!!

  • エクセルでデータ検索(抽出)ファイルを作成したい

    エクセルでわからない事があり投稿させて頂きました。 各店の在庫データをシート2.シート3.シート4へ貼り、 シート1に商品コードを入力する欄を作り、入力したコードの商品在庫が各店舗ごとに表示されるファイルを作成したいと思ってます。 (検索したコードの商品在庫数量をシート1のC列に表示させわかりやすくしたいです) 在庫データのファイルはC列に商品コード/F列に在庫数量が記載されており、商品コードでひっかかった行のF欄の数値をシート1のC列に出せるようにしたいのですが可能でしょうか? 過去ログは確認してみたもののわからず・・・ 可能かどうか教えて頂けると幸いです。

  • Excel VBAの質問です。

    エクセル2010を使用しています。 Excel VBA で二つのシートを比較して合致するレコードの行を削除する方法 値下げ,まとめのシートがありまして、 値下げ:b列に商品コードのデータ まとめ:a列に商品コードのデータ のようなExcelのデータがあります。 ここから、値下げのシートの商品コードを一つ一つ読み込みながら、まとめの商品コードと比較して、合致した値下げの商品コードの行を削除するプログラムを作りたいです。 商品コードのデータ数は毎回違い、値下げとまとめでも商品コードのデータ数は違います。 どなたかご教示いただけないでしょうか? よろしくお願いいたします。

  • エクセルです。2つの異なるデータを自動で一つにしたいのですが

    お願いいたします。 エクセル初心者で、ただいま勉強中です。 一つめのシートにはいろいろなお店の名前が縦に入っています。 2つ目のシートには、そこで販売している商品名・価格・売価などのデータが入っています。 各お店では、すべてではありませんが、同じような商品を扱います。 また、お店や商品の種類は増え続けます。 現状 シート1、シート2をそれぞれVLOOKUP関数を使い、シート3にそのデータを移行し、それぞれのお店の売上げなどの計算をしています。 しかし、毎回、シート1のコード、シート2のコードをシート3に入れている為、非常に時間がかかっています。 そこで以下のようにできませんか? シート1のお店のデータとシート2の商品群のデータを自動で一つにまとめて、一つのコードを自動で作成してくれるような、そのようなことは可能でしょうか。 ほとんどの商品はほとんどのお店で扱います。 最初から、A列にお店、B列に商品、C列に価格、D列に売価などを入れた新しいシートを作ればよいのでしょうが、お店も増え、商品も増えていくと、非常に手間がかかります。 また、上記のようにシート3に2つのシートのデータを移行しなくてはいけません。その作業もコードを2ついれていくのは大変です。 例えば、 新しいお店ができ、さらに商品が追加になりました。 これを、私が手動でシート1にお店を追加     私が手動でシート2に商品名などを追加 ということをしただけで、新シート4に自動で、全部のお店に全商品が追加された、一つのコードを作成したいのです。 そうできれば、一つのコードをシート3にBLOOKUP関数を使い、簡単に移行できそうな気がしまして。 ぜひ、そのような自動でやってくれる関数などがありましたら、またはもっとよい方法がありましたら教えて下さい。 何卒、よろしくお願いいたします。

  • VBAを使った、Excelでのシート間データ抽出

    はじめまして。みなさまどうか教えてください。 Sheet1にはA列に250行程、コードが存在します。 Sheet2にはA列(コード)からI列まで、そして1000行程データが存在します。 Sheet1にあるコードは重複はなく、Sheet2のコード内に必ず同じコードがあります。 Sheet2にも重複コードはありません。 そこでSheet1のコードを使い、Sheet2を検索し、同一コードのデータ(A列からI列の行すべて)を全て(250件分)、Sheet1のコード記載順(A1、A2、A3・・・・)で、Sheet3に抽出したいのです。 どうか、よろしくお願いします。

  • 検索マクロ

    こんばんわ。 エクセル初心者です。 今、下記の画像(中、下)のとおり、エクセルのシート2(1月分情報)からデータを 入力しています。シートは10枚くらいになる予定です。 データの構成は、各シートのA2から氏名が入力されており、何名入力されているかは 各月シートによって違っています。 列数はA列からF列まで6列文にそれぞれ情報が入力されています。 今ここでしたい処理なのですが、下画像の上段のようにシート1に氏名検索用の シートを作り、氏名の一文字を入れることによって、シート2以降にあるすべての氏名情報を引っ張ってシート1に表示したいのです。 何かいいコードはあるのでしょうか。今は目視で各シートをひとつづつ確認しているので 大変です。 よろしくお願いします。

  • エクセルでデータの比較をしたいです。お教え頂けないでしょうか

    エクセルでデータの比較をしたいです。お教え頂けないでしょうか エクセルで2つのシートにある同一の商品コードと 在庫数を比較するマクロを作成中です。 シート1のA列にある商品コードとB列にある在庫数を取得し シート2のA列にある商品コードから同じ商品コードを探します。 同一の商品コードがあった場合に在庫数を比較して その数が減少していなければC列に次の処理を加える。  商品コードが合致した後は 処理を抜けて次の商品コードを比較させたいのですが 下行にある商品コードを探し続けてしまいます。(データの総当りとなる) つきましては どの様に記述すれば良いのでしょうか お教え頂けます様 よろしくお願い致します。 *********** Sub check1() Dim kz1 As long 'シート1データ数 Dim kz2 As long 'シート2データ数 Dim st1 As String 'シート名 Dim dt1 As Variant '商品コード Dim dt2 As Variant '在庫数 Sheets("sheet1").Select st1 = ActiveSheet.Name kz1 = Range("a65536").End(xlUp).Row Range("a1").Select ActiveCell.Offset(1, 0).Select For a = 0 To kz1 - 2 Sheets(st1).Select dt1 = ActiveCell.Value '商品コード dt2 = ActiveCell.Offset(0, 1).Value '在庫数 Sheets("sheet2").Select kz2 = Range("a65536").End(xlUp).Row Range("a1").Select ActiveCell.Offset(1, 0).Select For b = 0 To kz2 - 1 '同一商品コードを検索 if activecell.value = dt1 '在庫数を比較 if activecell.value >= dt2 '在庫数が同じ もしくは増加していた場合に処理 '次の処理を追加 endif else ActiveCell.Offset(1, 0).Select endif Next b Sheets(st1).Select Next a end sub

  • Excel VBA ある範囲内で検索条件に一致したデータを入力する

    Excel VBA ある範囲内で検索条件に一致したデータを入力する Excel2003を使用しています。 Sheet2で選択している範囲内のB列のデータがSheet1で選択している範囲内のB列のデータと一致していたら、そのA列のデータをSheet2のA列に入力するというマクロを作成中ですが、うまくいきません…。 Sheet1とSheet2の選択範囲については、このマクロを実行前に都度選択するようにし、A列のデータは日付、B列のデータは数値です。 以前、示していただいたサンプルを参考にコードを書き換えて試していますが、なかなか思うようにいかず、質問させていただきました。 よろしくお願いします。

  • excelのデータ抽出?検索?についておしえてください。

    excelのデータ抽出?検索?についておしえてください。 エクセル2003で sheet1に次のようなデータがあります。   A列  B列  C列     D列  E列 ・・・ 1 組   番号  氏名     古典  現文 ・・・  2 1   1   青木 優    3 1   2   池田 洋子   4 1   3   植村 美紀   ・ ・ sheet2には1組の成績が sheet3には2組の成績が入っています。 クラスによって科目が違います。 この「氏名」と1行目の「科目名」が一致するデータを 他のシートから読み出してくる関数がありませんでしょうか 青木さんの古典を1組のシートから読み出すといった感じです。 説明がへたで 申し訳ないのですが うまく検索ができなくて困っています。 ぜひ くわしいかた教えてください。 どうぞ よろしくおねがいします。

  • 至急お願いします。エクセルデータの抽出

    エクセルの別シートのA列とB列を比較して、重複データがある場合はyesをない場合は空欄をどちらかのシートの新しい列に作りたいと思っています。 この場合何を使えばよいでしょうか? どうすれば良いか教えてください。

専門家に質問してみよう