• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAにて、複数シートからデータを抽出)

VBAにて、複数シートからデータを抽出

このQ&Aのポイント
  • エクセルVBAで複数のシートからの集計や抽出を行う方法について教えてください。
  • 1つのファイルには50ほどのシートがあり、各シートの列数とフォーマットは同じですが、行数は異なります。
  • すべてのシートから特定の条件(氏名:CD)でフィルタリングして集計シートに抽出する方法について教えてください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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

trionfator
質問者

お礼

ありがとうございました。 ほぼ、やりたい事が出来ました。 頂いたコードをベースに完成させたいと思います。

その他の回答 (1)

回答No.1

抽出の書き方とは、 シートの枚数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)に全データが取得されています。 この取得したデータにて、計算したりその結果を表示する方法はご自身でお考え下さい。

trionfator
質問者

お礼

ありがとうございます。 フィルタリング等をマクロ記録なりで勉強して みます。