エクセルで抽出マクロについて

このQ&Aのポイント
  • エクセルで抽出結果を別シートにコピーする方法について初心者が質問しています。抽出条件が2列にわたっている場合、特定の分類を抽出する方法を知りたいとのことです。
  • 具体的な例として、分類が「2」のデータを抽出して別シートにコピーする方法を知りたいとしています。
  • エクセルのバージョンが2007で、データは増えていく予定であるとしています。今までの試行錯誤でうまくいかなかったため、何かアドバイスがほしいとのことです。
回答を見る
  • ベストアンサー

エクセル 抽出マクロについて

はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A     B      C      D 日付   タイトル   分類(あ)  分類(い) 11/22   テレビ    3      2 12/15   ラジオ    1      4 11/18   雑誌     2      5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。  ↓ ●シート2に以下のように結果をコピーして表示。 A       B 日付     タイトル 11/22     テレビ 11/18     雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Excel(エクセル) VBA入門:フィルタオプション(AdvancedFilter)でのデータ抽出 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_advancedfilter.html が参考になるのでは? (抽出条件を2列:【分類(あ)・分類(い)】で行なえば)

hanao2378
質問者

お礼

早速のご回答、ありがとうございました。 ご紹介いただいたホームページを参考にやってみたらば、望んでいたような形で出来ました!! 実は、質問前に見ていたのが同じホームページの《Excel(エクセル) 基本講座:フィルタオプションの設定(データ抽出)》という部分だったのですよ。 なのに、VBA入門の方にはまるで気づいていなかったので、本当に助かりました。 どうもありがとうございました。

その他の回答 (4)

  • netmaster
  • ベストアンサー率28% (11/39)
回答No.5

どうしてもマクロで抽出したいというなら別ですが 作業セルE列にとしE2セルに =OR(C2=$E$1,D2=$E$1)*1 以下コピー E1に抽出したいコード入力 2行目以下をE列を基準に降順に並び替えA:B列をシート2にコピーと言う手も有ります

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.4

参考にしてください。 EXCEL2003の例です。2007でも問題ないはず Sub 検索_表示()   Dim ws1   As Worksheet   Dim ws2   As Worksheet   Dim ws3   As Worksheet   Dim mR   As Long   Dim wR   As Long   Dim eR   As Long   Dim wStr  As String   '   Set ws1 = Worksheets("Sheet1")   'シート1   Set ws2 = Worksheets("Sheet2")   'シート2   Set ws3 = Worksheets("Sheet3")   'シート3        wStr = ws1.Range("A1")       '←シート1のあるセル「A1とします」   eR = ws2.Cells(Rows.Count, "A").End(xlUp).Row 'シート2の現在設定データ行数を求める   With ws3     mR = .Cells(Rows.Count, "A").End(xlUp).Row 'シート3の現在入力データ行数を求める     For wR = 2 To mR       If .Cells(wR, 3) = wStr Or _         .Cells(wR, 4) = wStr Then         eR = eR + 1         ws2.Cells(eR, 1) = .Cells(wR, 1)  '日付         ws2.Cells(eR, 2) = .Cells(wR, 2)  'タイトル       End If     Next   End With End Sub

hanao2378
質問者

お礼

丁寧なご回答をいただき、ありがとうございます。 今回はn-junさんがご紹介してくださったホームページを参考に作ってしまいましたが、まだまだ理解できていない部分も多いので、今度pkh4989さんのもやってみたいと思います。 ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

VBAの勉強というのであれば、まずはマクロの記録を実行してみてください。 マクロの実行開始 1、シート3を選択、オートフィルター 2、C列が2を抽出、D列が2を抽出 3、1行目から1000行くらい(データ以上にたっぷりと選択) 4、シート2に選択A1セルに貼り付け マクロの記録の終了 上記で作成されたコードを少し編集すれば便利なものにあると思います。

hanao2378
質問者

お礼

ご回答ありがとうございます。 マクロの記録、今後やってみます。自分で一から入力するより、マクロが身近になりそうですよね。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

私なら、マクロを使わず、Sheet3に作業列を追加してやります。 こんな感じで Sheet1のA1に検索値が入るとして…… Sheet3の左端に作業列を追加します(A列) A2に =IF(COUNTIF(D2:E2,Sheet1!$A$1)>0,MAX(A$1:A1)+1,0) と入れて下までコピー。 Sheet2のA2に =IF(ROW()<=(MAX(Sheet3!A:A)+1),VLOOKUP(ROW()-1,Sheet3!A:C,2,FALSE),"") B2に =IF(ROW()<=(MAX(Sheet3!A:A)+1),VLOOKUP(ROW()-1,Sheet3!A:C,2,FALSE),"") と、入れてA2:B2を下までコピー マクロがご希望のようですが、ご参考までに

hanao2378
質問者

お礼

ご回答ありがとうございます。 関数でもできるのですね。今回はマクロ希望だったのですが、今後の参考にさせていただきます。

関連するQ&A

  • エクセルの抽出に関するマクロ

    (1)OSはVistaです。 (2)エクセル2007を使用しています。 (3)シートは「会員情報」「抽出条件」「抽出結果」の3枚です。 (4)「会員情報」シートのA5からR588までデータ(氏名、住所、電話番号など)が入っています。A5からR5は、タイトル行(フィールド)です。R列は「フォームコントロール」で挿入したチェックボックスです。。 (5)「抽出条件」シートには、会員の種類による抽出ができるような条件(正会員、準会員、協賛会員など)が設定してあります。 (6)「抽出結果」シートには、抽出された結果がコピーされます。 「会員情報」シートのデータを、「抽出条件」シートで指定した条件で抽出し、「抽出結果」シートにコピーするマクロは成功しました。 チェックボックスにチェックを入れた会員を抽出し、その方たちの郵便用ラベルを作成するのが最終目標ですが、今は「会員情報」シートのチェックボックスを使った抽出とその結果のコピーができないところでストップしています。チェックボックスを使った抽出とその結果のコピーのマクロを教えてください。

  • Excelで、文字の抽出・結果表示

    Excelで、文字の抽出を行い、その結果を表示させたいのですが、 どのようにマクロもしくはVBを組んでいいのかわからず困っています。 例えば・・・   A             B    C    D 1 日付:2008/1/30   2 タイトル:「あいうえお」 3 内容:「abcdef・・・」 4 番号:7890 5 日付:2008/1/30   6 タイトル:「さしすせそ」 7 内容:「jklmn・・・」 8 番号:54321 B列、C列、D列以降は空白となっています。 上記の中で、タイトル部分の「あいうえお」と「さしすせそ」だけを抽出して、別シートのその結果を表示させたいのですが、 どのようにすればいいでしょうか? ちなみに、上記のデータが膨大にあるので、ボタン一つで結果を表示させたいと思っています。 皆様、よろしくお願いいたします。

  • Excelでのデータ抽出

    Excelに複数シートがあり、各シートには以下の内容が記載されてます。  A列 伝票No.  B列 日付  C列 担当者  D列 型番    ・    ・    ・ B列で任意の日付を検索し該当する値があれば、その行(A~D…列)を別シートにコピーし抽出したいのです。 VBAを使ってやりたいのですがどうしたらよいでしょうか? よろしくお願いします。

  • Excelのオートフィルタでデータ抽出するマクロについて

    オートフィルタで指定した期間のデータ抽出のマクロを作成しているのですが上手くいきません。 例えばA列に 10月29日 11月1日 11月3日 11月5日 と日付を入力しており、B列、C列にデータを入力していたとして D列1行目に10月31日、D列2行目に11月4日と入力し D列1行目からD列2行目までと指定したデータを抽出するマクロを教えていただけませんか。 マクロ初心者で、困っております。どうかよろしく御願いします。

  • 行抽出マクロについて教えてください。

    エクセルで sheet1このように入力されております。 A列には製造番号 B列には日付 C列単価 D列記号がすでに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   123456   4/5 1020 K 2  789456  5/2 500 D 3  789789   6/2 9000 F 4  456789   6/2 5000 S ------------------------------------- sheet2には製造番号が500行ランダムに入力済みです。 _____________________________________ 行/列  A    B    C    D 1 456789 2  789456  3  789789 4  456789 5 : 6   : ------------------------------------- ボタンをおしたら一致した製造番号のBCD列にsheet1の日付・単価・記号を自動的に入力したい。どなたかご教授お願いいたします。

  • 行抽出マクロについて教えてください。

    エクセルで sheet1このように入力されております。 A列には製造番号 B列には日付 C列単価 D列記号がすでに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   123456   4/5   1020   K 2  789456  5/2   500   D 3  789789   6/2   9000   F 4  456789   6/2   5000   S ------------------------------------- sheet2には製造番号が500行ランダムに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   456789 2  789456  3  789789 4  456789 5    : 6   : ------------------------------------- ボタンをおしたら一致した製造番号のBCD列にsheet1の日付・単価・記号を自動的に入力したい。どなたかご教授お願いいたします。

  • 行抽出マクロについて教えてください。

    エクセルで sheet1このように入力されております。 A列には製造番号 B列には日付 C列単価 D列記号がすでに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   123456   4/5   1020   K 2  789456  5/2   500   D 3  789789   6/2   9000   F 4  456789   6/2   5000   S ------------------------------------- sheet2には製造番号が500行ランダムに入力済みです。 _____________________________________ 行/列  d    E    F    G 1   456789 2  789456  3  789789 4  456789 5    : 6   : ------------------------------------- ボタンをおしたら一致した製造番号のEFG列にsheet1の日付・単価・記号を自動的に入力したい。どなたかご教授お願いいたします。

  • 行抽出マクロについて教えてください。

    エクセルで sheet1このように入力されております。 A列には製造番号 B列には日付 C列単価 D列記号がすでに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   123456   4/5   1020   K 2  789456  5/2   500   D 3  789789   6/2   9000   F 4  456789   6/2   5000   S ------------------------------------- sheet2には製造番号が500行ランダムに入力済みです。 _____________________________________ 行/列  d    E    F    G 2   456789 3  789456  4  789789 5  456789 6    : 7   : ------------------------------------- ボタンをおしたら一致した製造番号のEFG列にsheet1の日付・単価・記号を自動的に入力したい。どなたかご教授お願いいたします。

  • エクセルのマクロの登録について

    エクセルのマクロ登録についてご質問です。 エクセルでマクロを登録したいのですが、 D7~D49まで自動で数式が反映するようにしてあります。 マクロのボタンを作成し、そのボタンを押すとコピーを選択した状態になるようにしてあります。 これが、すぐよこのE列~AH列まで日付が並んでおり、D7~D49に反映させたデータを 対応する日付の下に毎日値貼り付けをしている常態です。     D      E     F     G   自動反映   9/1   9/2   9/3 7   ~ 49 ボタンひとつでコピーした状態ではなく、その対応した日付の下に値貼り付けすることはできますでしょうか。 これがシート1、シート2、シート3、シート4まで あるのですが、ボタンひとつで登録するようにできますでしょうか。 どなたかご回答よろしくお願い致します。

  • EXCELで別ファイルからデータを抽出するには?

    EXCELについて条件に一致する列の内容を抽出する方法を教えてください。 シート1の行に日付があり、列に品名と日ごとの数を入力してあるシートがあります。 このシートの内容を別のシートに日付を入力すると、その日の内容が表示されるようにしたいのですが、うまくいきません。 [シート1]     1    2    3   4 (←日付) A品  10  20  30   40… B品  30   10  40  20… C品  15  16   17  18… D品  20  21   22  23… [シート2]     *(←日付を入力) A品 (   ) B品 (   ) C品 (   ) D品 (  ) シート1とシート2はそれぞれ別ファイルで同時に開いている状況です。 シート2の*部分に日付を入れると該当する日付の各品名の数量が( )の部分に表示されるようにするにはどうしたらよいですか?

専門家に質問してみよう