Excelマクロでシート3にデータを抽出する方法

このQ&Aのポイント
  • Excelのマクロを使用して、シート1およびシート2からデータを抽出し、シート3に貼り付ける方法について教えてください。
  • 現在、オートフィルタを使用してデータを抽出し、範囲をコピーしてシート3に貼り付ける方法を使用していますが、より効率的な方法(VBA)があれば教えてください。
  • シート1とシート2のデータを抽出するために、Excelのマクロを使用してシート3にデータを自動的にコピーする方法を教えてください。
回答を見る
  • ベストアンサー

エクセル マクロ

以下の処理を教えて頂ける方がいらっしゃいましたらご教示ください。 A - B - C - D - E 日付 - 商品名 - 単価 - 数量 - 金額 a41 - バナナ - 120 - 10 - 1,200 a42 - みかん - 110 - 20 - 2,200 a42 - りんご - 150 - 10 - 1,500 a42 - バナナ - 120 - 15 - 1,800 a42 - なし - 150 - 20 - 3,000 a51 - りんご - 150 - 30 - 4,500 a51 - バナナ - 120 - 25 - 3,000 a51 - なし - 160 - 20 - 3,200 a52 - りんご - 145 - 35 - 5,075 a52 - みかん - 120 - 40 - 4,800 a53 - バナナ - 115 - 25 - 2,875 上記、シート1のデータが、3000行あります。 A - B - C - D - E 日付 a42 a52 上記、シート2のデータが、150行あります。 A - B - C - D - E 日付 - 商品名 - 単価 - 数量 - 金額 a42 - みかん - 110 - 20 - 2,200 a42 - りんご - 150 - 10 - 1,500 a42 - バナナ - 120 - 15 - 1,800 a42 - なし - 150 - 20 - 3,000 a52 - りんご - 145 - 35 - 5,075 a52 - みかん - 120 - 40 - 4,800 シート3に上記データのように抽出するには、どうすればよろしいでしょうか。 オートフィルタで,抽出後、抽出範囲をシート3にコピー貼り付けを繰り返しているのですが、もっといい方法(VBA)で、できませんでしょうか。

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

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

こんばんは! 各Sheetとも1行目はタイトル行で、データは2行目以降にある(表示する)とします。 一例です。 Alt+F11キー → 画面左側の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() Dim i As Long, k As Long Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") Set ws3 = Worksheets("Sheet3") k = ws3.Cells(Rows.Count, 1).End(xlUp).Row If k > 1 Then Range(ws3.Cells(2, 1), ws3.Cells(k, 5)).ClearContents End If For k = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row ws1.Columns("A:D").AutoFilter field:=1, Criteria1:=ws2.Cells(k, 1) i = ws1.Cells(Rows.Count, 1).End(xlUp).Row If i > 1 Then Range(ws1.Cells(2, 1), ws1.Cells(i, 5)).Copy Destination:= _ ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1) End If Next k ws1.Select Selection.AutoFilter End Sub こんな感じではどうでしょうか?m(_ _)m

bigjapan8
質問者

お礼

素早い回答ありがとうございます。 出来ました。 しかも、わかりやすい回答で、素晴らしいです。 本当に感謝します。

関連するQ&A

  • エクセルの関数についてです、よろしくお願いします

    エクセルの関数についてです、よろしくお願いします。 sheet1に以下の様なデータが何百行とあります。 A B C D E 日付  顧客名  品名  数量  金額 上記のsheet1のデータを基にsheet2へ抽出して転記する ものを作りたいと考えています。 具体的に言いますと sheet2のA1に2014/11/21、 B1に2014/12/20、 C1に ○○商店と入力するとその下に A      B     C     D 日付   品名   数量 金額 2014/11/23  りんご 5 750 2014/11/28  みかん 2 300 2014/12/2   いちご 3 600 2014/12/10  りんご 5 750 sheet1のリストから該当するものを引っ張ってきて sheet2へ表示させるものです オートフィルタ等でなく、関数で出来ないでしょうか お詳しい先生方よろしくお願いします。

  • エクセル のマクロで 複数の表を1つにまとめたい

    エクセル のマクロで 複数の表を1つにまとめたい 下記のようなシートがあります。 Sheet1 A B C E F G I J K 1 日付  品名 数 日付  品名 数 日付  品名 数 2 1/1  みかん 100 1/2 りんご 50 1/1 バナナ 30 3 1/5  みかん 50 1/6 りんご 25 1/7 バナナ 20 4 1/10 みかん 30 1/11 りんご 15 1/10 バナナ 10 5 1/12 りんご 30 1/11 バナナ 10 6 1/13 りんご 50 みかん・りんご・バナナのそれぞれの表をマクロで下記のような1つの表ににまとめたいのですが どのようにしたら良いかご教授お願いいたします。 (初心者なので可能であればマクロ内で’コメント付きで解説いただけると助かります)  M N O 1 日付 品名 数 2 1/1 みかん 100 3 1/1 バナナ 30 4 1/5 みかん 50 5 1/6 りんご 25 6 1/7 バナナ 20 7 1/10 みかん 30 8 1/10 バナナ 10 9 1/11 りんご 15 10 1/11 バナナ 10 11 1/12 りんご 30 12 1/13 りんご 50 うまく説明できないのでイメージ画像を添付いたします。

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

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

  • 並べ替え方法

    A列 B列 C列 D列 E列 品目 単価 個数 (イメージ) りんご 100 50 りんご 100 60 りんご 110 りんご 90 80 りんご 80 みかん 50 30 30 みかん 50 20 みかん みかん 40 40 みかん 60 バナナ 150 30 バナナ 150 40 バナナ 70 バナナ 140 50 バナナ 90 A列 B列 C列のデータがランダムにあるとしてそれを 品目ごと単価ごとに集約して D列 E列に集計するにはどうしたら良いですか? お詳しい方がいらしたら、どうかご教授ください。

  • エクセル WINXP VLOOKUPと COUNTIFを組み合わせる

    お世話になります。 自分なりにやってみましたがどこが違うのかわかりません。 まず、シートが二つあり、一つはデータの羅列。内容は、仕入れたものの品名、単価、数量、金額(これは横並びに。)などをどんどん仕入れたたびに下行へ入力していっています。もう一つはこのデータから一番最新のものの単価をあらわすデータを作りたいシートです。 考えているのは、 シート1に・・・  A  B   C 12/1 りんご @300 12/1 みかん @200 12/2 さとう @320 12/3 なし  @100 12/4 りんご @230 シート2に、上記の商品の最新単価を抜き出したいのです。 りんご  とA2セルに入れれば、B2にりんごの最新単価230円が入るようにしたいのです。  A    B りんご  @230 という風に。シート1のデータは何千行もあります。シート2の りんご、にあたるデータは、すでに決まっていて100行分くらいあります。 シート2の、B2のセルに・・・ (A2の「りんご」と同じものを、シート1のA1からA1000(←例えば)までの一番最下段にあるものを選び、その同じ行のC列にある単価を、とってくる。) というような式を作りたいのです。 なかなか勉強不足なのですが、どうかご伝授下さい。   

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

    エクセル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にぎっしり入っています。 宜しくお願い致します。

  • 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です。宜しくお願いします。

  • エクセルの集計について

    エクセルの集計について 項目 単価 数量 合計 りんご 50 3 150 みかん 30 5 150 バナナ 80 4 320 みかん 30 3 90 りんご 50 6 300 りんご 50 2 100 バナナ 80 4 320 みかん 30 7 210 上記のような表で りんご 11 550 バナナ 8 640 というように、0以外のものを集計できますか?

  • エクセルでの質問です

    毎度お世話になっております。 エクセルで下記のような事は出来ますでしょうか? シート1に品名、数量が記載されておりますがシート2に抽出された結果のみ表示する 例)シート1    りんご 100    みかん 200    バナナ 200    りんご 200    バナナ 300    いちご 200 シート2(結果表示)     りんご 300     みかん 200     バナナ 500     いちご 200 と、それぞれの合計数量を抽出結果として表示して管理を行いたいと思ってます。 教えてください

  • エクセルで納品書作成

    エクセルで納品書を作成しています。 まず、『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 至急、助けてください(/_<。)

専門家に質問してみよう