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

このQ&Aのポイント
  • (2)データシートから(6)抽出シートへのデータ抽出方法をご教授ください
  • VLOOKUPを使用してデータシートの項目を(6)抽出シートに抽出する方法を教えてください
  • データシートから(6)抽出シートへのデータ抽出についての効果的な方法を教えてください
回答を見る
  • ベストアンサー

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

元データ:(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)抽出シートはある程度の雛形が決まっています。 何かいい方法はありますでしょうか。 どうぞご教授宜しくお願い致します。 図が変になってしまってすいません。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。補足拝見しました。 結合セルに対応するように修正してみました。 列番号が連続しなくなったので、まとめて1行文を処理していた部分を列ごとにばらして書いているので、ちょっと長くなってしまいました。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Cells(1, 1).Address <> "$A$3" Then Exit Sub    Dim i As Integer, j As Integer, N As Integer  Dim WS1 As Worksheet, WS2 As Worksheet  Set WS1 = Worksheets("データシート") 'データシート名を指定  Set WS2 = ActiveSheet  Application.ScreenUpdating = False  Application.EnableEvents = False  j = 22  For i = 5 To WS1.Cells(Rows.Count, "B").End(xlUp).Row   If WS1.Cells(i, "P").Value = WS2.Range("A3").Value Then    WS2.Cells(j, "B").Value = WS1.Cells(i, "B").Value    WS2.Cells(j, "D").Value = WS1.Cells(i, "C").Value    WS2.Cells(j, "G").Resize(1, 2).Value = WS1.Cells(i, "D").Resize(1, 2).Value    WS2.Cells(j, "I").Value = WS1.Cells(i, "F").Value    WS2.Cells(j, "M").Value = WS1.Cells(i, "G").Value    j = j + 1   End If  Next  Do While WS2.Cells(j, "B").Value <> ""   WS2.Cells(j, "B").MergeArea.ClearContents   WS2.Cells(j, "D").MergeArea.ClearContents   WS2.Cells(j, "G").Resize(1, 2).ClearContents   WS2.Cells(j, "I").MergeArea.ClearContents   WS2.Cells(j, "M").MergeArea.ClearContents   j = j + 1  Loop  Application.EnableEvents = True  Application.ScreenUpdating = True End Sub うまく動かないときなどは、また補足をお願いします。

nobitadebu
質問者

お礼

見事動きました。 大変丁寧な回答を頂きまして、感謝しております。 ham_kamoさん、誠にありがとうございました。

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

数式を組み合わせてやろうと思ったのですが、かなり複雑になってしまい、またデータ数が多い場合はかなり重たくなってしまう可能性があるのでマクロにしてみました。 抽出シートのシートタブを右クリックして「コードの表示」を選択するとVBAの画面が出るので、そこに以下のマクロをコピーして貼り付けてみてください。 (マクロ中に出てくる"データシート"という箇所は実際のシート名に即して変更してください) Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Cells(1, 1).Address <> "$A$3" Then Exit Sub    Dim i As Integer, j As Integer  Dim WS1 As Worksheet, WS2 As Worksheet  Set WS1 = Worksheets("データシート") 'データシート名を指定  Set WS2 = ActiveSheet  Application.ScreenUpdating = False  Application.EnableEvents = False  If WS2.Range("B22").Value <> "" Then   WS2.Range(Cells(22, "B"), Cells(Rows.Count, "G").End(xlUp)).ClearContents  End If  j = 22  For i = 5 To WS1.Cells(Rows.Count, "B").End(xlUp).Row   If WS1.Cells(i, "P").Value = WS2.Range("A3").Value Then    WS2.Cells(j, "B").Resize(1, 6).Value = WS1.Cells(i, "B").Resize(1, 6).Value    j = j + 1   End If  Next  Application.EnableEvents = True  Application.ScreenUpdating = True End Sub 貼り付けたらVBAの画面を閉じてかまいません。 これで、抽出シートのA3セルの仕入れ先名称を書き換えたらその仕入れ先の抽出されます。

nobitadebu
質問者

お礼

ご回答、誠にありがとうございます。 教えて頂いたマクロでほぼ出来かけているのですが、 私のミスで(6)抽出シートの方が、   A  BC   DEF   G  H    IJKL  MNOPQ 3 A商店                               ・                ・ 21   (項目) (内容) (数量)(単位)  (単価) (金額) 22   りんご  果物   1  個    100   100 23   ジュース 飲料   3  本    100   300 24    牛乳  飲料   2  本    100   200                ・                ・                ・ という風にBC(項目)、DEF(内容)、G(数量)、H(単位)、IJKL(単位) MNOPQ(金額)という結合セルなのです。 ご回答頂いたマクロを実行した所、(項目)部分は完全に抽出出来たのですが、(内容)以降は少しずれて抽出されました。 私の説明ミスで誠に申し訳ありませんが、ご教授頂ければと 思ってます。どうぞ宜しくお願い致します。

関連するQ&A

  • エクセルの関数について。

    すいませんエクセルの作業で教えてください。こちらはエクセルのデータをコピーしたものを張り付けています。 下記のように同じ商品を数社に購入した場合にそれぞれの仕入れ先で何個購入出来て 仕入れ合計と売り合計がどうなのか簡単に表示できるようにしたいです。瞬時にわかりたいです・。 売り合計と仕入れ合計がいくらになるのかこちらのエクセルの下あたりに関数で入力しようと 思っているのですがなかなかやり方がわかりません。おそらくVLOOKUP関数でやれば簡単なのではと 思っているのですがどう入力設定をすればわかりません。忙しいところ申し訳ございませんが どなたか教えて頂けないでしょうか_? よろしくお願いいたします。 みずらくて申し訳ございません 品名はがアルファベット 仕入れ先もアルファベットになっております。 よろしくお願いいたします。 商品 数量 売り単価 合計 仕入先 仕入単価 仕入合計 リンゴ 50 65 3,250 A商店 49 2,450 リンゴ 50 56 2,800 B商店 42 2,100 リンゴ 50 35 1,750 B商店 25 1,250 リンゴ 50 43 2,150 A商店 30 1,500 リンゴ 50 170 8,500 A商店 120 6,000 リンゴ 50 43 2,150 A商店 30 1,500 ミカン 50 36 1,800 A商店 18 900 ミカン 50 36 1,800 A商店 18 900 ミカン 50 37 1,850 A商店 25 1,250 ミカン 50 70 3,500 C商店 50 2,500 ミカン 50 70 3,500 D商店 50 2,500 パイナップル 50 55 2,750 D商店 40 2,000 パイナップル 50 135 6,750 D商店 100 5,000 パイナップル 50 45 2,250 C商店 30 1,500

  • エクセルで納品書作成

    エクセルで納品書を作成しています。 まず、『Sheet1』に受注一覧表があります。    A    B     C      D    E   F 1 受注ID   顧客    品名    単価   数量  合計 2 100100  あい商店   みかん   150    4   600 3 100100  あい商店   りんご   150    2   300 4 100100  あい商店   ばなな   200    1   200 5 100101  (株)うえ    みかん   150    4   600 3 100101  (株)うえ    りんご   150    2   300 4 100101  (株)うえ    ばなな   200    1   200 次に、、『Sheet2』に納品書があります。 セルA1に受注IDを『100100』と入力すると、 自動的に、    A    B    C   D   5 品名    単価   数量  合計 6 みかん   150    4   600 7 りんご   150    2   300 8 ばなな   200    1   200 と表示されるようにしたいのですが・・・。 セルA6~A8に =IF(ISBLANK($A$1),"",VLOOKUP($A$1,Sheet1!$A$1:$F$9997,3)) セルB6~B8に =IF(ISBLANK($A$1),"",VLOOKUP($A$1,Sheet1!$A$1:$F$9997,4)) セルC6~C8に =IF(ISBLANK($A$1),"",VLOOKUP($A$1,Sheet1!$A$1:$F$9997,5)) 入力したのですが、↓↓こうなっちゃいましたo(;△;)o    A    B    C   D   5 品名    単価   数量  合計 6 りんご   150    2   300 7 りんご   150    2   300 8 りんご   150    2   300 至急、助けてください(/_<。)

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

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

  • エクセルデータの抽出方法について

    A3:E3に横に仕入れ先、品名、数量、金額の項目がありランダムに15行データが入っています。 この表をG3:J17に仕入れ先AをM3:Q17に仕入れ先Bをという順番で仕入れ先毎にデータを抽出する方法を教えてください。 サンプル表を添付します。

  • エクセルで注文書→請求書を作っていて困っています。

    下記のような注文書がSheet1にあります。 A列  B列 C列  D列 E列 品名  数量 単位 単価  小計 りんご 1  個  100 ¥100 みかん 0  個   30 ¥ 0 バナナ 2 本  100 ¥200 スイカ 2  個 200  ¥400 メロン 0 個  300 ¥ 0      合計 ¥700 上表のような顧客が数量を入力すれば小計が出るとこまでは出来ています。 Sheet2に注文のあった品目のみで請求書を生成したいのですが、 良い方法がありましたら教えていただけますでしょうか。 A列  B列  C列  D列  E列 品名  数量 単位  単価  小計 りんご 1  個   100 ¥100 バナナ 2 本   100 ¥200 スイカ 2  個 200  ¥400       合計 ¥700 ※要するに品名のラインナップがある中で0個のものは飛ばして  上図のような形に自動生成できるものが希望です。 色々な関数を試してみましたが、結果関数の意味も分からずやっているので、 なかなか思うようにできなくて困っています。 どうぞ、良い方法がありましたらご教示の程、よろしくお願いいたします。

  • シート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へ抽出したいのですが 何か良い方法はないでしょうか??

  • Excelで入力したデータを他のシートにも反映したいです

    Excelでシートに入力したデータだけを他のシートに表示させたいです・・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。 シート1  Å列    B列 C列      キャベツ     玉   1 りんご     個    2 オレンジ    個 バナナ     本    10 きゅうり    本 ニラ      Kg  20.5 シート2  Å列    B列 C列 キャベツ     玉   1 りんご     個  2 バナナ     本   10 ニラ      Kg  20.5 ↑のように。シート1に入力したデータを入力した行ごと表示させたいです。

  • EXCEL データの検索・抽出

    シート1と2に同じようなデータがあり   A   B   C    D    E    F 1 001  100 りんご  1個  @100  \100 2 001  101 みかん 1個  @110  \110 3 002  200 なし   2個  @120  \240 4 002  201 かき   3個  @130  \360 といったように最初にコードがあり、その中に違うコードがあるのですが、これを1行ずつ見比べて無いデータ、数値が違う(個数や単価)データを抽出したいのです。 シート1と2のデータは並び方もバラバラでシート1にあるデータが2にないデータもあります(そのデータは特に必要ありません) ※無いデータと数値が違うデータは別々に抽出したいので最後にオートフィルタがかけられるようにしたいです。 EXCEL2000です。宜しくお願いします。

  • エクセル関数 データの抽出について

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

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

    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)あたりで、「フィルターオプションの設定」が作動しなくなり抽出不可能となりました。 「フィルターオプションの設定」以外の方法でデータを抽出する方法は無いでしょうか。

専門家に質問してみよう