同じフォルダ内に同じ形式のファイルがいくつかあり、ブック間で数値の串刺し集計と、文字列を結合して集計できるマクロの作成がしたいです。
フォルダ内には各所から送付されてくる同一フォーマット書類『(回答)**.xls』が多数あります。
「**」にはそれぞれの部署名が入っており、シート名は『回答』となっています。
各ファイルの『回答』シート F5~F32セルまでには数値が入力されています。
同じく各ファイルの『回答』シート G5~G32セルまでには文字列が入力されています。
これらを同一フォルダ内にある『集計ファイル.xls』の『集計』シートに集計をしたいのです。
F列は数値なので串刺し集計、G列はそれぞれバラバラの文字列のため「,」で区切って文字を結合をしたいと思っています。
(G列イメージ)
あああ,XX,○△△,・・・
このようなマクロを同一フォルダ内にある『集計ファイル.xls』に作成することはできるのでしょうか?
よろしくお願いいたします。
No.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
の部分だけでも実行して、対象のエクセルファイル名を(もれなく、余分なく掴めるか)掴む所からやってみたら。
丁寧にコードを書いて頂きありがとうございました。
VBA初心者であり時間的に余裕もありませんでしたので、ご指摘のような丸投げとなってしまいました。
頂きましたコードを活用して役立たせて頂きます。
No.1
- 回答日時:
この回答への補足
丁寧にありがとうございます。
ご指摘ありましたとおり、集計ファイルの「集計」シートは(回答)ファイルと同じフォーマットにて既にシートを作成してあります。
この「集計」シートF列からG列に合計と文字列の結合を入力されるようにしたいのです。
Cドライブに「data」フォルダを作成して「集計ファイル」とその他集計する多数の「(回答)部署名.xls」を格納しました。
お教え頂いたマクロを実行しましたが、集計ファイルには何も入力はされませんでした。
エラーメッセージも出ておらず、どこが機能していないか原因も分かりません。
お手数ですが再度ご教示頂けませんでしょうか。
ありがとうございました。
私の方法が間違っているためか、残念ながら思うような形にはなりませんでしたが、頂きましたコードを活用して役立たせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAが途中で止まります
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
vbaで他のブックに転記したい。...
-
ワイルドカード「*」を使うとう...
-
ACCESSVBA からExcelの他ブック...
-
【ExcelVBA】インデックスが有...
-
vbaでvbaProjectのパスワード解...
-
VBAで別のブックにシートをコピ...
-
Excelのマクロについて教えてく...
-
【マクロ】違うフォルダにある...
-
VBA コードを実行すると画面が...
-
VBS Bookを閉じるコード
-
[Excel]ADODBでNull変換されて...
-
pythonでクラスで複数のメソッ...
-
エクセルマクロで、他ブックか...
-
VBA 実行時エラー 2147024893
-
ExcelVBA:すでに開かれている...
-
【VBA】全シートの計算式を全て...
-
VBの処理結果をEXCELシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
(マクロ)データをAブックからB...
-
VBS Bookを閉じるコード
-
VBA 別ブックからコピペしたい...
-
VBA 複数のエクセルから一つの...
-
VBA シート名が一致した場合の...
-
【ExcelVBA】インデックスが有...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
【VBA】全シートの計算式を全て...
-
複数のエクセルブックをひとつ...
-
VBA 実行時エラー 2147024893
-
ExcelのVBAです。フォルダ内の...
おすすめ情報