- ベストアンサー
VBAにて、複数シートからデータを抽出
- エクセルVBAで複数のシートからの集計や抽出を行う方法について教えてください。
- 1つのファイルには50ほどのシートがあり、各シートの列数とフォーマットは同じですが、行数は異なります。
- すべてのシートから特定の条件(氏名:CD)でフィルタリングして集計シートに抽出する方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
B1等にCDのように該当する列の検索したい言葉を記入することにして。 sub macro1() dim i as long dim h as range worksheets("Sheet1").select range(range("A4"), cells.specialcells(xlcelltypelastcell)).entirerow.delete on error resume next for i = 2 to worksheets.count for each h in range("1:1").specialcells(xlcelltypeconstants) worksheets(i).range("A1").currentregion.autofilter field:=h.column, criteria1:=h.value next worksheets(i).autofilter.range.offset(1).copy destination:=range("A65536").end(xlup).offset(1) worksheets(i).autofiltermode = false next i end sub
その他の回答 (1)
- 米沢 栄蔵(@YON56)
- ベストアンサー率36% (37/102)
抽出の書き方とは、 シートの枚数A,全シートのうちデータ取得したい最大行数をB,全シートのうちデータ取得したい最大列数をCと考えたとき、 取得したデータの保管装置を設計するということと考えます。 Dim AAA() A=Sheets.Count B=10000 (事前に調査。将来のことも考慮に入れて若干多めに設定) C=23 (今回は4です) ReDim AAA(A,B,C) データの取得方法 For X=1 To A Sheets((X).Select D=Application.WorksheetFunction.Max(Range("A1:A10000")) (データ取得したい行数をシート毎に取得する方法は、上記方法でなくても可) For Y=1 To D M=Y(データ取得したい行番号を取得する数式) For Z=1 To C N=Z(データ取得したい番号を取得する数式) AAA(X,Y,Z)=Cells(M,N).Value Next Z Next Y Next X AAA(A,B,C)に全データが取得されています。 この取得したデータにて、計算したりその結果を表示する方法はご自身でお考え下さい。
お礼
ありがとうございます。 フィルタリング等をマクロ記録なりで勉強して みます。
お礼
ありがとうございました。 ほぼ、やりたい事が出来ました。 頂いたコードをベースに完成させたいと思います。