• 締切済み

シート1とシート2に共通するデータを抽出する

エクセルブック シート1 と シート2 を比較し A列 B列 D列 が同じ内容のデータを シート3 へ抽出する方法を教えて下さい。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

近頃はまっているdictionary使用のコードを汎用化してみました。ご参考まで。興味をお持ちになったら、VBA dictionaryでWEB検索してみて下さい。 Sub test() Application.ScreenUpdating = False Call compareColumns(Sheets(1).Range("A1").CurrentRegion, Sheets(2).Range("A1").CurrentRegion, Sheets(3).Range("a1"), Array(1, 2, 4)) Application.ScreenUpdating = True End Sub '比較範囲1, 比較範囲2, 出力先セル、比較する列番号の配列(個数任意) '列番号は、比較対象範囲内の相対列番号とする Private Sub compareColumns(rng1 As Range, rng2 As Range, destRange As Range, checkColumns As Variant) Dim targetRow As Range, outputRange As Range Dim keyString As String Dim i As Long Dim myDic As Object Const delimiterChar As String = "☆" Set outputRange = destRange Set myDic = CreateObject("Scripting.Dictionary") For Each targetRow In rng1.Rows keyString = "" For i = 0 To UBound(checkColumns) If keyString = "" Then keyString = targetRow.Cells(checkColumns(i)).Text Else keyString = keyString & delimiterChar & targetRow.Cells(checkColumns(i)).Text End If Next i If Not myDic.exists(keyString) Then myDic.Add keyString, targetRow Else MsgBox ("キーが重複しています") Exit Sub End If Next For Each targetRow In rng2.Rows keyString = "" For i = 0 To UBound(checkColumns) If keyString = "" Then keyString = targetRow.Cells(checkColumns(i)).Text Else keyString = keyString & delimiterChar & targetRow.Cells(checkColumns(i)).Text End If Next i If myDic.exists(keyString) Then myDic(keyString).Copy outputRange.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Set outputRange = outputRange.Offset(1, 0) End If Next Application.CutCopyMode = False End Sub ’☆の所は、およそ出て来そうもない文字にして下さい。 '組み合わせの結果が重複する場合は、エラーで終了する仕様です。また、C列に何が入っているか分かりませんが、Sheet(1)の方の値を抽出します。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

シート3のA列に 作業列 =IF(Sheet1!A1&Sheet1!B1&Sheet1!C1=Sheet2!A1&Sheet2!B1&Sheet2!C1,ROW(),"") 下フィル B1セルに =INDEX(Sheet1!A$1:A$100,SMALL($A:$A,ROW(A1))) 右へ2つフィル 下フィルではいかがでしょうか。 エラー処理は含まれていません

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

こういう問題は質問者は関数でやるよりほかないのだろうが、抜き出し問題は関数では苦手なものです。 VBAででもやらないとすんなりは出来ない。 難しさは3つあって (1)抜き出し(抽出)問題は関数では技巧的になる (2)本質問では比較対象がA,B,D列と3列に分かれていることである。 (3)たいしたこと無いが、比較が別シート間 それとA列内に同じ内容は重複して出ないのかが大切で、質問に書いてない。 本当はそういう程度の人には本件無理な課題で、また本質問は課題丸投げの質問だ。 ーーー 参考事項は &を使って3列を結合した列(本当は別の考慮か要る場合あるが。本来別なのに結合すると区別できずに、同じに見える文字列が無いか)をシート1、シート2に新たにつくり(XとYとする)、シート1からその行・セル(セルX)の内容がシート2のY全行に渉って無いかCOUNTIF関数で聞いて、その件数が1より大なら同じ内容のものアリとして処理する。 同じものが見つかったとして、それを関数の組み合わせで抜き出すのはGoogleで「imogasi方式」で照会すれば、条件抜き出しの質問例が出て、作業列を使った方法だが参考になるでしょう。また他の解法も他の回答者が出している。

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

関連するQ&A

  • 必要なデータを抽出したい

    必要なデータを抽出したい    A   B    C   D ・・・ 1 7/1   101   102  103 2 7/2   101   103 3 7/3   105   203 4 7/4   103   205 5 7/5   101   202 ・ ・    ・ ・ ・    ・ ・ ・    ・ Excelで上の様にA列に日付、B行列以降に数字が書かれているシートから、抽出したい数字が含まれている行を別シートに抽出するマクロはどのように書けばよろしいのでしょうか。 技術者の方、よろしくお願いします。 例えば、101が含まれているデータを抽出したら、sheet2に    A   B    C   D 1 7/1   101   102  103 2 7/2   101   103 3 7/5   101   202 となるようにしたいのです。

  • シート1とシート2のデータ一致 抽出方法

    エクセルのデータ抽出でお知恵をお貸し下さい。 シート1 A列  B列     C列 品名  製品番号  数量 AA    1AAAA    200 BB    1BBBB    250 CC    1CCCC    300 シート2 A列   B列     C列 品名  製品番号   数量 AA    1AAAA   200 BB    1BBBB   250 AB    AAAA    500 CC    1CCCC   300 上記のようなシートがあります。 内容は同じなのですが、シート2にはシート1にはない品名、製品番号、数量が含まれます。 シート1の品名、製品番号、数量がすべて一致するものをシート3へ抽出し、 一致しなかったデータ(シート1にはなく、シート2にあるものを含め)をシート4へ抽出したいのですが 何か良い方法はないでしょうか??

  • データシートから他のシートへ抽出

    元データ:(2)データシート 抽出シート:(6)抽出シート (2)データシートには、    B     C    D    E    F    G・・・・・・P 4 (項目) (内容)  (数量) (単位) (単価)  (金額) (仕入先) 5 りんご   果物   1    個  100   100   A商店 6 みかん  果物   2    個  100   200   B商店 7 ジュース 飲料   3    本  100   300   A商店 8 牛乳    飲料   2    本  100   200   A商店                ・                ・                ・ とあります。  これを(6)抽出シートのA3セルに仕入先名を入れることで、 (6)抽出シート   A   B    C     D   E   F   G 3 A商店                               ・                ・ 21   (項目) (内容) (数量)(単位)(単価)(金額) 22   りんご  果物   1   個 100  100 23   ジュース 飲料   3   本 100  300 24    牛乳  飲料   2   本 100  200                ・                ・                ・ 上記の様にB22(項目)、C22(内容)、D22(数量)等を抽出したいのですが、VLOOKUPを使ってもりんごのみを何件も抽出したりで困ってます。 ちなみに(6)抽出シートはある程度の雛形が決まっています。 何かいい方法はありますでしょうか。 どうぞご教授宜しくお願い致します。 図が変になってしまってすいません。

  • Excel VBA で二つのシートを比較抽出

    Excel VBA で二つのシートを比較して合致するレコードを別のシートに抽出する方法について 下記ホームページのコードを利用させていただきました。 https://okwave.jp/qa/q5917011.html ●fax2シート B列(検索順)  セル1 A    2 B    3 D    4 C ●fax3シート( 比較抽出結果)  セル1 A    2 B    3 C    4 D 比較抽出結果が検索順にするにはどのようにコードを記述すればよいか教えていただけますか。

  • シートの抽出と読み込み

    Excel 2013で作成した次のA、Bの計 2 つのブックがあります。どちらも .xlsx ファイルです。 ブックAは、a1~a50 の 50 個のシートで構成されています。 ブックBは、b1~b50 の 50 個のシートで構成されています。 シート a2 だけを抽出して別のブック (ブックC) とするにはどうしたらいいでしょうか。 シート a2 をシート b2 の前に挿入するにはどうしたらいいでしょうか。

  • データ抽出方法

    おはようございます。 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

  • Excelでデータを抽出したい

    エクセルに詳しくないので、教えてください。 Sheet1のA列とB列に文章データがあります。このデータは2つで1セットになっています。 Sheet2には、D列部分にA列のデータが順不同であります。 このA列とD列にあるデータ同士の文章は同一のものですが、 Sheet1にあるB列のデータがSheet2にはないので、 同じB列のデータをD列の隣のE列に表示させ、 同じようにまた2つで1セットにしたいと思っていますが、方法がわかりません。 わかりにくい表現で申し訳ないのですが 教えていただけると助かります。 よろしくお願いします。

  • データシートから該当するデータのみ抽出するには。

    Sheet(1)に台帳を作成しています。 A列からZ列に以下の様な    A列 B列 C列 D列 E列 F列 G列   項目 仕様 コード 単価 分類1 分類2 分類3 1 2 1270行 程度のデータです。 分類は6分類設定しています。 行に設定しているデータの内容で10種類の項目に大別出来るので、Sheet(2)からSheet(11)に項目別に検索用Sheetを作成し、分類1から分類6をA列からF列に選択方式で表示出来るように、同時に20行の検索用データを入力出来るようにしました。 但し、分類1~分類6の内、分類2~分類6はブランクの場合もあります。 表示された選択値に基づき、Sheet(1)の台帳にマクロで「データ」→「フィルター」→「フィルターオプションの設定」で抽出を行いましたが、Sheet(9)あたりで、「フィルターオプションの設定」が作動しなくなり抽出不可能となりました。 「フィルターオプションの設定」以外の方法でデータを抽出する方法は無いでしょうか。

  • Excelでの複数データ抽出方法

    Excelで関数を使用して以下のようなデータから 複数のデータ抽出を行いたいのですが可能でしょうか? <sheet1> A列 B列 C列 D列     E列 123456 11 12 13    13 123457 12 13 14    13、14 123158 13 14 15    13,14 123159 14 15 16    14  123160 15 16 17 ※抽出するデータは「13・14」になり、抽出場所は別シートでもかまいません。 過去の質問など参照してみましたがうまく出来ませんでした。 複数の関数を組み合わせでもかまいませんので、お手数おかけしますが よい方法が有ればご教示お願いします。

  • エクセルのセル抽出でチェックシート

    複数ブックの同じシートの特定セルの内容を抽出し、1つのチェックシート用のエクセルに貼り付けたいのですが、可能でしょうか。 複数ブックは1つのフォルダの中に入れます。特定セルは複数のシートにまたがっています。 Book1 Sheet1:A5, B10, D20/Sheet3:C1, H4/Sheet5:F7 Book2 Sheet1:A5, B10, D20/Sheet3:C1, H4/Sheet5:F7 Book3 Sheet1:A5, B10, D20/Sheet3:C1, H4/Sheet5:F7  ・  ・

このQ&Aのポイント
  • 進撃の巨人に登場するキャラクターの中で、中央第一憲兵に入団してケニー並みに対人立体機動装置を使いこなすのは誰でしょうか?
  • 進撃の巨人のキャラクターで、中央第一憲兵に入団し、ケニーに匹敵するほど優れた立体機動装置の使い手は誰でしょうか?
  • 進撃の巨人に登場するキャラクターの中で、中央第一憲兵に入団し、ケニーと同等の腕前を持つ立体機動装置の使い手は誰ですか?
回答を見る

専門家に質問してみよう