dポイントプレゼントキャンペーン実施中!

同じフォルダ内に同じ形式のファイルがいくつかあり、ブック間で数値の串刺し集計と、文字列を結合して集計できるマクロの作成がしたいです。

フォルダ内には各所から送付されてくる同一フォーマット書類『(回答)**.xls』が多数あります。
「**」にはそれぞれの部署名が入っており、シート名は『回答』となっています。

各ファイルの『回答』シート F5~F32セルまでには数値が入力されています。
同じく各ファイルの『回答』シート G5~G32セルまでには文字列が入力されています。

これらを同一フォルダ内にある『集計ファイル.xls』の『集計』シートに集計をしたいのです。

F列は数値なので串刺し集計、G列はそれぞれバラバラの文字列のため「,」で区切って文字を結合をしたいと思っています。
(G列イメージ)
あああ,XX,○△△,・・・

このようなマクロを同一フォルダ内にある『集計ファイル.xls』に作成することはできるのでしょうか?
よろしくお願いいたします。

A 回答 (2件)

この質問は、丸投げになっている。

ヒントだけを考えて、簡単な例でテストしてみた。改良する根気と力があるならヒントにしてください。
ーー
対象のセルに、文字列があると3D集計や、統合、ピボットも使えない。
出来合いのソフトも適したものは見つからないだろう?
ただしVBAでやるには無理があるように思う。
ブックが多数あると、インタープリタ的なVBAでは、処理に時間がかかることを覚悟せねばならない。
ーー
私のテスト例 あるフォルダに
回答総務
回答人事
回答営業
の名のブックをつくり、その各々のシートSheet1のA1:C4の範囲にデータを入れた。第1列は項目名。
対象セルを総なめという泥臭いやり方だが、
Sub test01()
Dim buf As String
Dim cl
Set wks = ActiveWorkbook
x = CurDir
buf = Dir(x & "\")
Do While buf <> ""
If Left(buf, 2) = "回答" And Right(buf, 4) = ".xls" Then
MsgBox buf
Set wk = Workbooks.Open(buf)
For Each cl In wk.Worksheets("Sheet1").Range("A1:C4")
If IsNumeric(cl) Then
wks.Worksheets("sheet1").Cells(cl.Row, cl.Column) = _
wks.Worksheets("sheet1").Cells(cl.Row, cl.Column) + cl
Else
wks.Worksheets("sheet1").Cells(cl.Row, cl.Column) = cl
End If
Next
wk.Close SaveChanges:=False
End If
buf = Dir()
Loop
End Sub
(注意)
If Left(buf, 2) = "回答" And Right(buf, 4) = ".xls" Then
は質問どおりだと
If Left(buf,4) = "(回答)" And Right(buf, 4) = ".xls" Then
ーー
x = CurDir
はフォルダまでのフルパス+"\"を指定
ーー
For Each cl In wk.Worksheets("Sheet1").Range("A1:C4")
はF列と他を分ける
あるいは文字列セルなら、
wks.Worksheets("sheet1").Cells(cl.Row, cl.Column) = _
wks.Worksheets("sheet1").Cells(cl.Row, cl.Column) +","+ cl
この部分はいれておらず、私はテストしてない。
最後に、このブックを名前を付けて保存(操作又はVBAで。ここでは略)
ScreenUpdating=Falseなどは入れた方が良いかも。
2007以降なら、エクセルの拡張子の判別部分は変えて。
ーー
Sub test02()
Dim buf As String
Dim cl
Set wks = ActiveWorkbook
x = CurDir
buf = Dir(x & "\")
Do While buf <> ""
If Left(buf, 2) = "回答" And Right(buf, 4) = ".xls" Then
MsgBox buf
End If
buf = Dir()
Loop
End Sub
の部分だけでも実行して、対象のエクセルファイル名を(もれなく、余分なく掴めるか)掴む所からやってみたら。
    • good
    • 0
この回答へのお礼

丁寧にコードを書いて頂きありがとうございました。
VBA初心者であり時間的に余裕もありませんでしたので、ご指摘のような丸投げとなってしまいました。
頂きましたコードを活用して役立たせて頂きます。

お礼日時:2011/09/13 11:10

この回答への補足

丁寧にありがとうございます。
ご指摘ありましたとおり、集計ファイルの「集計」シートは(回答)ファイルと同じフォーマットにて既にシートを作成してあります。
この「集計」シートF列からG列に合計と文字列の結合を入力されるようにしたいのです。

Cドライブに「data」フォルダを作成して「集計ファイル」とその他集計する多数の「(回答)部署名.xls」を格納しました。
お教え頂いたマクロを実行しましたが、集計ファイルには何も入力はされませんでした。
エラーメッセージも出ておらず、どこが機能していないか原因も分かりません。
お手数ですが再度ご教示頂けませんでしょうか。

補足日時:2011/09/06 20:23
    • good
    • 0
この回答へのお礼

ありがとうございました。
私の方法が間違っているためか、残念ながら思うような形にはなりませんでしたが、頂きましたコードを活用して役立たせて頂きます。

お礼日時:2011/09/13 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!