• 締切済み

Excel VBA 複数のブックから新しいブックでひとつの表に集計

   A B 1   45 2   62 82 3   51 . . 複数のExcelファイルに上記のような表があります。「B列に数値が入力されており、なおかつA列に数値が未入力のセル」を、1個とカウントし、新しいブックでファイル名別に項目をつくり、表を作成したい考えています。↓ ファイルその(1)  4 ファイルその(2)  6 ファイルその(3)  0 VBA等で集計する方法はあるでしょうか。よろしくお願いいたします。

noname#50895
noname#50895

みんなの回答

  • nekotaru
  • ベストアンサー率50% (22/44)
回答No.2

こんな感じでしょうか Sub a() Dim SchFol As String Dim wsOut As Worksheet '検索対象フォルダを指定してください SchFol = "D:\temop" With Application.FileSearch .NewSearch .LookIn = SchFol .SearchSubFolders = False 'サブフォルダーを検索するときはTRUEにしてください .Filename = "*.xls" .FileType = msoFileTypeAllFiles If .Execute() > 0 Then Set wsOut = ThisWorkbook.Worksheets.Add For i = 1 To .FoundFiles.Count Call chkbook(wsOut, .FoundFiles(i)) Next i Else MsgBox "検索条件を満たすファイルはありません。" End If End With End Sub Private Sub chkbook(wsOut As Worksheet, inBook As String) Dim wbIn As Workbook Dim wsIn As Worksheet Dim eRowA As Long Dim eRowB As Long Dim eRow As Long Dim wRow As Long Dim outCnt As Long Dim outRow As Long Workbooks.Open inBook For Each wbIn In Workbooks If wbIn.FullName = inBook Then Exit For End If Next '全シートを調べます For Each wsIn In wbIn.Worksheets With wsIn If .Cells(1, 1).Value = "" And .Cells(1, 2) = "" Then 'データなしは処理しない Else outCnt = 0 'データの終端を検索 eRowA = eRowGet(wsIn, "A") eRowB = eRowGet(wsIn, "B") If eRowA > eRowB Then eRow = eRowA Else eRow = eRowB End If For wRow = 1 To eRow If .Cells(wRow, 2).Value <> "" And .Cells(wRow, 1).Value = "" Then outCnt = outCnt + 1 End If Next outRow = eRowGet(wsOut, "A") + 1 With wsOut .Cells(outRow, 1) = inBook .Cells(outRow, 2) = wsIn.Name .Cells(outRow, 3) = outCnt End With End If End With Next wbIn.Close (False) End Sub Private Function eRowGet(ws As Worksheet, wCol As String) As Long With ws.Cells(65536, wCol) If .Value <> "" Then eRowGet = 65536 Else eRowGet = .End(xlUp).Row End If End With End Function

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.1

カウントするだけならVBAは必要ないと思いますが・・ 何かチャレンジしてみました?

関連するQ&A

  • SUMIF関数で複数のブックを参照する方法

    A列に1~20の数値がランダムに入っていて、B列~Z列はそれぞれ1~20に対する数値が入っています。 それを数値1項目のB~Zの各々の集計、同2のB~Z、と20までB~Zそれぞれの集計を出すブックを作成しています。 その関数自体はSUMIFでできるをことを教えていただいたのですが、 その集計は複数のブックにまたがっており、その全てからA列の数値を参照しなければならなくなりました。 ブック001のセル01、ブック002のセル01・・・ブック012のセル01、 同様にブック001のセル02、ブック002のセル02・・・ブック012のセル02、といった具合です。 関数で処理することはできるのでしょうか? よろしくお願いいたします。

  • エクセルで、複数ブックの表を効率的に集計する方法

    エクセルで、複数ブックの表を効率的に集計する方法を考えています。 定型の集計用シートがあり、Aさん、Bさん、Cさんの3人が記入するとします。 その結果できたシート(シートa、シートb、シートcとします)を以下の2つの方法で集計したいと考えています。 (1)串刺し。上記の様式と同じかたちの集計シートを作成し、各項目ごとに数字を合算。 (2)縦並びの一覧表。 シートaの項目、シートbの項目、シートcの項目が縦に並ぶ一覧表です。 ちなみに、上記3シートは、同一ブックではなく、異なるブック(ファイル)です。 この例のように、3つくらいのデータをまとめるのであれば、手作業でなんとでもなるのですが、実際は、数十~百数十のデータの集計を考えています。 こういう作業を効率的に行う「方法」か「アプリケーション」はありますでしょうか? ちなみに、「Excelシート差込アドイン」というアプリケーションを使って少し省力化できました。

  • エクセル2003の集計で

    エクセル2003の集計で セルA列にコンマ区切りで数値が入っているのですが これをセルB列でで集計することってできますか? A列の数値の数はバラバラです このような感じです↓ A1 1,2,3 B1 6 A2 2,3 B2 5 A3 9,1,7 B3 17 よろしくお願いします

  • エクセルVBAでブック間のコピーをしたい。

    エクセルVBAでブック間のコピーをしたい。 エクセルのVBA初心者です。 複数のブックが開いている時(ブックA,B,C...)に、今選択しているブックAのあるセルを、直前に選んでいたブックBやC(そのつど変わります)にコピーする方法は有りますでしょうか? どなたか教えて下さい。

  • VBA 複数ブックへ書き込み

    VBA初心者です。 1つのフォルダ内にある100(ファイル名001から100)個のエクセルファイル(ブック)の特定の場所(すべてのエクセル ファイルはファイル名は違うが、同一のシート名で同一のセルの構造になっている。 以上に対して、1つのもとになるファイルA(ブック、シート)の特定のセル(同一列の行を上から順次下る)セルの値を先の同一フォルダ内のエクセルファイル100(001~100)個に対して、ブックオープン、特定セルのデリート、特定セルへの書き込み、ブック保存という一連の作業を行いたいです。 多数のファイルから1つの集計ファイルに値を読み込んできて書き込むサンプルはあるようですが、逆に1つのファイルから同一フォルダ内の多数のファイル(ブック)の特定場所に書き込むためのサンプルコードを教えていただけると大変助かります。 以上よろしくお願いいたします。

  • Excel 他の複数ブック開くVBA 

    お世話になります。田中と申します。 以前も同じ質問させていただきましたが、複数のブックを自動で開いて閉じるVBAロジックをご教授いただきましたく思います。 Excel VBAを使って下記(1)、(2)の処理を実現したいと思っております。 どなたかVBAロジックをご教授いただけませんでしょうか。 (1)集計.xlsxというブックがあります。このブックに[ファイル]というシートがありまして A1のパス、B1にファイル名が記入されています。 この組み合わせのファイル数は可変ですが下記のように大体10個程度あります。 A2(パス)+B2(ファイル名) A3(パス)+B3(ファイル名) A4(パス)+B4(ファイル名) A5(パス)+B5(ファイル名) ・・・ (2)このシートに[開く]というボタンを配置して、クリックされたらA1(パス)+B1(ファイル名)でファイルを開いて何もしないですぐに閉じて、次のファイルを開いて閉じて、また次のファイルを開いて閉じて。。という動きをファイル数分繰り返したいのです。 どなたかご教授いただけますでしょうか。 よろしくお願い致します。

  • VBAでExcelのBookの串刺し集計

    VBAでExcelのBookの串刺し集計するにはどうすれば良いでしょうか? 同一フォルダ内のファイルをすべて集計したいと思っています。 よろしくお願いします。

  • エクセルの集計について教えてください

    エクセルの集計について教えてください 添付のように、A列からは入力用 A列 日付(複数月にまたがる) B列 金額 C列 項目 E列からは集計用として E列 項目 F列からは月ごとに集計できるような表を作りました 集計用は、また別途ほかのシートで参照して使用する予定です A列には、今後も次々データを足していく予定です 月単位でデータを抽出したのち、項目ごとに合計を算出したいのですが、どの関数を組み合わせればいいのかわかりません。 エクセルはほぼ初心者です ピボットテーブルを使用してもよいのですが、ほかのシートで参照できる方法を教えてください よろしくお願いします

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

    エクセルの集計について エクセルでセルの結合を使用した場合の集計の仕方を教えてください。 現在、以下の様に入力をしており、A1~A3、A4~A6をセル結合しています。           A          B 1       2010/4/5        5 2                    6 3                    7 4       2010/4/10       5 5                    6 6                    7 7       2010/5/3       5 この場合に2010年4月のB列の集計を行ないたいのですが、本来36となるところが、それぞれ一番上の行の数値のみを集計し10となってしまいます。36にするにはどの様な式を入力すればよいでしょうか。因みに現在使用している式は以下の通りです。 =SUMIF(A1:A7,"<2010/5/1",B1:B7) 以上よろしくお願いいたします。

  • EXCELで複数のブックの特定のセルの合計を求める方法は?

    EXCELの関数,数式で質問です。 <例題>異なる様式の表(数値)で構成された3つのシート(a,b,c)をもつブックが,同じ型式で50個(50ブック)ある。各ブックの特定のシートの特定の数値セル(1~50ブックのbシートのA5セル)の合計を求める数式を示しなさい。 ※この回答の1つは「=1ブックのbのA5+2ブックのbのA5+3ブックのbのA5+4ブックのbのA5+…+50ブックのbのA5」だと思うのです。しかし,いちいち各ブックの対象シート(b)の対象セル(A5)をクリックして数式を完成させるのは大変です。さらに,求めたい特定の数値セルが「bのA5」だけでなく「aのB3」や「cのR6」など,3つ,4つと増えるとすると,同様の数式を入力するのに大変な労力を要します。何か簡単な集計方法(関数,数式)はあるでしょうか。ややこしい質問ですみません。どうぞ御教示ください。

専門家に質問してみよう