• ベストアンサー

EXCELを使ってデータ抽出の方法

二つのシートから、品番の違うものを抽出したいのです。たとえば: シート1に 品番 A-654565-005-2 B-789456-003-4 C-258369-001-3 E-357689-009-9 D-147258-004-4 d-147258-005-5 usp-3690258-006-8 usp-3690258-006-8 シート2に 品番 A-654565-005-2 B-789456-003-4 C-258369-001-3 d-147258-005-5 があります。シート1とシート2と比べると、「usp-3690258-006-8」のような品番がないのです。そのようなもの(シート2にないもの)を全部シート3に抽出したいのです。やり方を教えてください。よろしくお願いします。

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

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

#4です。 ●私の場合Sheet2の品番について、Sheet1の品番テーブルに無いもの(Sheet1を主体にしてSheet2をチェックした)を、Sheet3に書き出すようにしました。質問のSheet1の例示の数が、Sheet2の例示の数より多かったものでつい思いこみました。質問では逆でした。 関数式Sheet1!とSheet2!を相互に入れ替えてみてください。 ●それに品番だけのテーブルはおかしいと思い、、FALSEの前を2にしましたが、1(検索列自身。品番列)に改めてみてください。 今のところそれ以外は誤りが発見できません。

teiken
質問者

お礼

大変ありがとうございました。VLOOKUPを使いましたが、なぜかうまくいきませんでした。でも、IFとISERRORを使いました。いいヒントを与えてくれてありがとうございます。 私は二列を使って =ISERROR(MATCH(Sheet2!A7,Sheet1!$A:$A,0)) と=IF(A1=TRUE,Sheet2!A7,"")という式を使いました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

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

Sheet1の品番がユニーク(重複なし)なら、 シート3のA1に =IF(ISERROR(VLOOKUP(Sheet2!A1,Sheet1!$A$1:$B$4,2,FALSE)),Sheet2!A1,"")といれ、下に複写してださい。 B1には =IF(ISERROR(VLOOKUP(Sheet2!A1,Sheet1!$A$1:$B$4,2,FALSE)),Sheet2!B1,"") といれ、C1、D1・・列以右も同様です。 Sheet1の品番をテーブル(表)としてSheet2のA列品番1つ1つを探し、見つからない時は、その行のA,B、C・・のセルの値をSheet3に持ってきます。 後はSheet3で値のみの複写を自己自身に行い 式を消し、ソートすればデータは下に沈殿しますので、上部のスペース部分を削除してください。 テスト不足ですが、上手く行くといいですが。 実のところVBAでやりたい!

teiken
質問者

お礼

ありがとうございます。 教えていただいた方法で試しましたが、なぜかうまくいきませんでした。よければもう一度詳しく教えていただけないのでしょうか。よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • fever
  • ベストアンサー率43% (32/73)
回答No.3

Sheet1の方に関数:MATCHを用いる手もあります。 Sheet1のB2に =MATCH(A2,Sheet2!$A:$A,0) と入力し、あとはフィルハンドルでリストの最後までコピーします。 Sheet2にない品番には『#N/A』が表示されますので、オートフィルタで『#N/A』のみを表示させます。 A列をコピーして、Sheet3にペーストします。

teiken
質問者

補足

教えていただいたとおり、シート2にない品番が『#N/A』と表示しました。しかし、『#N/A』と表示した品番はどうやってシート3に抽出するのですか。教えてください。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
noname#4564
noname#4564
回答No.2

  この手の処理はデータベースを使うに限ります。 下記の要領で行けると思いますが、どうでしょう。 # Jetでは文字列の比較がTextCompareなので、大文字小文字の区別が問題ですが・・・。 Public Sub PickUp() Dim Engine As Object Dim db As Object Dim rs As Object Dim strSql As String Dim FullDbName As String Set Engine = CreateObject("DAO.DBEngine.36") With Application.ActiveWorkbook Set db = Engine.OpenDatabase(.Path & "\" & .Name, False, False, "Excel 8.0") End With FullDbName = "[Excel 8.0;Database=" & db.Name & "]" strSql = "SELECT DISTINCT Table1.品番" strSql = strSql & " FROM" strSql = strSql & " " & FullDbName & ".[Sheet1$] Table1" strSql = strSql & " LEFT JOIN" strSql = strSql & " " & FullDbName & ".[Sheet2$] Table2" strSql = strSql & " ON" strSql = strSql & " Table1.品番 = Table2.品番" strSql = strSql & " WHERE" strSql = strSql & " Table2.品番" strSql = strSql & " Is Null" strSql = strSql & " ORDER BY Table1.品番" Set rs = db.OpenRecordset(strSql, 4) 'dbOpenSnapshot Application.Worksheets("Sheet3").Cells(1, 1).CopyFromRecordset rs db.Close Set rs = Nothing Set db = Nothing End Sub  

teiken
質問者

お礼

答えていただき、ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • kojitti
  • ベストアンサー率32% (449/1386)
回答No.1

これでどうでしょうか? Sub Main() k = 1 For i = 1 To 65536 If Worksheets(1).Range("A1")(i) = "" Then Exit For For j = 1 To 65536 If Worksheets(2).Range("A1")(j) = Worksheets(1).Range("A1")(i) Then Exit For If Worksheets(2).Range("A1")(j) = "" Or j = 65536 Then Worksheets(3).Range("A1")(k).Formula = Worksheets(1).Range("A1")(i) k = k + 1 Exit For End If Next j Next i End Sub

teiken
質問者

お礼

早速答えていただき、本当にありがとうございます。 プロではないので、なかなかむずかしいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • データ抽出方法

    おはようございます。 sheet1 B列、C列に重複してるデータと、そうでないデータが混在して沢山あります。 sheet2 B列、C列に一点一様の型でデータを抽出したいご伝授下さい sheet1 B列、C列 A-1-1 A A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-1 B C-2-3 C sheet2 B列、C列(抽出結果) A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-3 C

  • エクセル抽出に関して教えて下さい。

    エクセル初心者なんですが、抽出について教えて下さい! 例 シート(1)     A  B  C  D  E 1  8 2    ■ シート(2)    A  B  C  D  E 1  4  5  6  7  8 2  1  1  3  7  2   3  5  6  7  1  2 シート(1)のB2に シート(1)のA1に入った数字を シート(2)のA1~E1の中で探して 該当した数字の列の3行目をシート(1)のB2に表示させる。 すみません、意味不明だったらごめんなさい。 ご理解いただける方、よろしくお願い致します。

  • エクセルで別シートに抽出

    エクセルで同じBOOKに以下のようなシートがあります。 【sheet1】 A B C D E… 5 7 8 9 3… 3 3 6 5 6… 【sheet2】 A B C D E… 2 7 8 5 3… 6 3 9 5 7… 【sheet3】 A B C D E… 1 8 5 7 6… 1 3 8 5 7… こんなシートがsheet1~sheet50まであり、これを 【sheet51】に A A A  5 2 1 3 6 1 【sheet52】に B B B 7 7 8 3 3 3 のようになるだけ簡単に抽出したいのですが… どなたか、よろしくお願いします。

  • エクセル抽出方法がわかりません

    エクセル抽出方法がわかりません   A   B  1 Aさん 19 2 Aさん 20 3 Bさん 19 4 Cさん 19 5 Cさん 20 6 Dさん 20 7 Eさん 19 抽出結果  A   B  3 Bさん 19 7 Eさん 19 19しかない人を抽出するにはどうしたらよいのでしょうか、、

  • データの抽出について

    エクセルにてデータの抽出をしたいのですが、わからないので教えてください。 例えば、下の様なデータがあります。 回数   1回目   2回目   3回目   4回目 1000    あ      a      A      0 1001    い       b       B      1  1002    う       c       C      2 1003    え      d       D      3   1004    お      e       E      4  1005    か      f       F      5 別のシートに、 回数の1001と入力すると、3回目のBが抽出    1003と入力すると、3回目のDが抽出    1005と入力すると、3回目のFが抽出出来る様にしたいです わかりにくい文章ですいませんが、ご回答よろしくお願いします。 

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • エクセルで項目を抽出したい

    皆様のお知恵をお貸しください。 日々作業者が行っている日報の項目を一覧表より抽出したいのです。 シート1には受付日(A列) 品番(B列) 数量(C列) 納期(D列)・・・ などが記入されています。日々増えていき月あたり100件程度です シート2には作業者の日報に書かれている品番(A列)、作業時間(B列)、作業者名(C列)作業日時(D列)を手入力していきます。 月当たり1000ほどの入力になります。 複数の作業者が同じ仕事をすること、日をまたぐこともあり重複しています。 求めたいことはシート3のA列にシート2で書かれた品名をシート1の品名の中から抽出し自動で書き出したいのです。 今はピボットを使いシート2のデータを表にして、そこの項目をLOOKUP関数を用いて導きだしていますが、その都度ピボットを更新させないといけないので煩わしいと思い、できれば関数で抽出をしたいのです。欲を言えば品番の若い順に自動で抽出できればいいのですが、まずはシート2に書かれた順でもかまいません。 記入例 シート1には A列    B列    C列    D列 10/1   10001    30    10/12 10/2   10002    1     10/5 10/2 10003 3 11/5 ・       ・        ・ シート2には  A列    B列     C列    D列 10001    2.5     ○○   10/2  9058    4      ○○   10/2 10003 1 ○○   10/3 10001 1 ××   10/3  10003 6 ××   10/3 10002 2 △△   10/5 シート3には(希望としては)  A列     9058 10001 10002 10003 . . . よろしくお願いします。     

  • エクセルでデータの抽出する際に困っています

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • エクセルで別シートのデータを抽出

    ~シートA~   A B C D E F G  ┌─────────────┐ 1│ │10│20│30│40│50│60│  │ │───────────│ 2│ │11│21│31│41│51│61│  │4│───────────│ 3│月│12│22│32│42│52│62│  │ │───────────│ 4│ │13│23│33│43│53│63│  │ │───────────│ 5│ │14│24│34│44│54│64│  └─────────────┘ 6  ┌─────────────┐ 7│ │10│20│30│40│50│60│  │ │───────────│ 8│ │11│21│31│41│51│61│  │5│───────────│ 9│月│12│22│32│42│52│62│  │ │───────────│ 10│ │13│23│33│43│53│63│  │ │───────────│ 11│ │14│24│34│44│54│64│  └─────────────┘         ・         ・         ・ ~シートB~   A B C D E F G  ┌─────────────┐ 1│ ▽ │ │ │ │ │ │  │ │───────────│ 2│ │ │ │ │ │ │ │  │○│───────────│ 3│月│ │ │ │ │ │ │  │ │───────────│ 4│ │ │ │ │ │ │ │  │ │───────────│ 5│ │ │ │ │ │ │ │  └─────────────┘ ↑はリストボックスで1月~12月の値が入っている。 上記条件でシートBのリストボックスから選んだ月のデータをシートAの表から該当する月のデータを全て抽出したいのですが、どのようにすればよろしいでしょうか。

  • エクセルの関数を使った抽出方法

    エクセルの関数を使った抽出方法 お世話になります。Excelで下記のような例で同じ製品が複数存在するリストから 製品が重複しないようにリスト化することは可能でしょうか? 「重複の削除」を使わずに抽出したいです。 当方はオフィス2003使用です。 sheet1が日報でsheet2が請求書です。金額は抽出して合計しなくていいです。 あくまでも製品名だけをsheet2の請求書に抽出したいです。 何かよい方法をご存知の方がいらっしゃいましたらご指導願います。 よろしくお願いいたします。 【抽出前】sheet1 製品名   金額   A     ○円   B     ○円     B     ○円    B     ○円    C     ○円     C     ○円      D     ○円     E     ○円   E     ○円   F     ○円 【抽出後】sheet2 製品名   金額   A     ○円   B     ○円      C     ○円   D     ○円   E     ○円   F     ○円

MFC-J6997CDW紙詰まり
このQ&Aのポイント
  • MFC-J6997CDWでトレイ1の用紙が詰まるトラブルが発生しています。
  • Windows10で有線LAN接続しており、関連するソフトやアプリは特にありません。
  • 問題はトレイ1のみで、トレイ2は異常はありません。
回答を見る

専門家に質問してみよう