• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 抽出マクロについて)

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

このQ&Aのポイント
  • エクセルで抽出結果を別シートにコピーする方法について初心者が質問しています。抽出条件が2列にわたっている場合、特定の分類を抽出する方法を知りたいとのことです。
  • 具体的な例として、分類が「2」のデータを抽出して別シートにコピーする方法を知りたいとしています。
  • エクセルのバージョンが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