• ベストアンサー

同フォルダ内の串刺し集計と文字列結合のマクロ作成

同じフォルダ内に同じ形式のファイルがいくつかあり、ブック間で数値の串刺し集計と、文字列を結合して集計できるマクロの作成がしたいです。 フォルダ内には各所から送付されてくる同一フォーマット書類『(回答)**.xls』が多数あります。 「**」にはそれぞれの部署名が入っており、シート名は『回答』となっています。 各ファイルの『回答』シート F5~F32セルまでには数値が入力されています。 同じく各ファイルの『回答』シート G5~G32セルまでには文字列が入力されています。 これらを同一フォルダ内にある『集計ファイル.xls』の『集計』シートに集計をしたいのです。 F列は数値なので串刺し集計、G列はそれぞれバラバラの文字列のため「,」で区切って文字を結合をしたいと思っています。 (G列イメージ) あああ,XX,○△△,・・・ このようなマクロを同一フォルダ内にある『集計ファイル.xls』に作成することはできるのでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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 の部分だけでも実行して、対象のエクセルファイル名を(もれなく、余分なく掴めるか)掴む所からやってみたら。

chokoy67
質問者

お礼

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

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1
chokoy67
質問者

お礼

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

chokoy67
質問者

補足

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

関連するQ&A

  • 【Excel VBA】串刺し集計について

    Excel VBA初心者です。 串刺し集計について質問させてください。 同じ構成のシートが3つあります。中には数字や文字列が入っています(各シートの同じセルに数字と文字列が入ることは無し)。 串刺しのイメージで数字が入っているセルは合計を、文字列が入っているセルにはどれか1つ(規則もマクロに入れる、例としては○、×、-であれば○など)を合計用の同じセルにいれたいのですが、マクロの組み方をご教授願います。

  • Excel2007のマクロで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • エクセル フォルダ内の.xlsファイルの集計

    エクセルで、複数の.xlsファイルの特定セルを集計するマクロを組みたいのですが、VBA勉強しはじめでうまくいかず、皆様の知識をお借りできればありがたいと思い質問させていただきます。 作業としては あるフォルダに複数の.xlsファイル(それぞれのファイルは同一形式で、sheet1およびsheet2は作業用シート。sheet3以降がデータの入ったシートとする)を置いておき、それぞれのデータ入りシート(シート数はファイルにより異なる)の特定セルを集計したものを、新たなブックに書き込む という形です。 その際に、各シートの特定セルの内容により出力するセルを変えたいと思っています。 実際には、 AAA.xlsというファイルの3枚目以降のシートで、L2セルに「B」と記述があれば別ブックのB3セルに、「C」と記載されていれば別ブックのC3セルに、それぞれD4セルの数値を集計する。 次にBBB.xlsというファイルに関しても同様に集計し、その結果はB4セルとC4セルに出力する これを当該フォルダに入っているファイル全てについて行う ※L2セルには「B」「C」以外の文字は入りません。 こういった作業ができればと思っています。 お時間のある方がおられましたら、ご教授いただけますでしょうか。 参考になるサイトなどがありましたら、アドレスだけでも御教えいただけると幸いです。 質問の仕方が悪いようでしたら、ご指摘いただければ再度説明させていただきます。拙劣な説明ですがどうかよろしくお願いします。

  • Excel2007のVBAで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 下記がお題になります 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • excelの串刺し集計マクロ

    現在各所から送られてくる同一フォーマット書類(ファイル名は別,シート1枚,名称:sheet1)約150ファイルを 集計ブックと同じフォルダに保存して集計ブックの集計シートで串集計するマクロコードを見つけて便利に使用しております。 が、このたび各所から送られてくる同一フォーマット書類がシート二枚(名称:sheet1,sheet2)に渡る事になりまして、 集計ブックの集計シートもそれぞれ用に2枚必要になり、 1枚目の「集計1シート」には「sheet1」だけを集計し、二枚目の「集計2シート」には「sheet2」だけを集計するのはどうすればよいでしょうか? また、今回追加になったシートは計算シートで、計算式が埋められており、「マクロの記録」なんてのでやってはみましたが、 埋められている計算式が反映されるだけで計算結果が反映されませんでした。 合わせてご教授願えると大変助かります。 老人にお知恵をお貸しください。よろしくお願いいたします。

  • Excel2007での串刺集計について

    Excel2007での串刺集計について、複数のファイルのあるシートを串刺集計する際の方法を詳しくご教授願います。 複数あるファイル名はまちまちです。 串刺したいシート名前もまちまちです。 しかし、シートのつくりは一緒です。 例えば、AファイルのaシートのA1、BファイルのbシートのA1、CファイルのcシートのA1を串刺ししたいのです。 当方Excel2007は初心者なので、宜しくお願い申し上げます。

  • Excelで選択した文字列を結合するマクロ

    Excelで複数選択したセルの文字列を結合するマクロってありますか? CONCATENATEや&でいつも文字列を結合しているのですが、 一度に10セル前後結合するので効率が悪く困っています。 お手数ですがご教授いただけたらと思います。 宜しくお願い致します。

  • マクロ 結合した列の一部の非表示

    結合されているセル行の中から数列だけを非表示にするマクロ QNo.1413139の回答を参考にしたら、列は、できました。しかし、変数を使ったりするとエラーがでました。 行の英文字列をうまくあらわす方法を教えてください。 例えば、B1:U1を結合して、D、G、Jの列全体のいくつかを非表示にしたい場合はどうしたらいいでしょうか?

  • Excelの集計マクロについて質問です

    Excelの集計マクロについて質問です 少々ややこしいのですが、情報を調べていても中々分からなかったのでアドバイスや解決策を頂けますと幸いです。 画像を添付いたしましたので参照しつつ見ていただけると助かります。 2行を一つの入力データとし、名称が4セルの構成になっており シートが集計用シートとデータ入力用シートというものになっています。 そして入力用シートをコピーして、入力内容を増やしていきます。 データ(集計用)にデータ(1)で入力されたものを、データ(集計用)のデータ(1)列に転記していき データ(2)で、データ(1)とかぶるものはデータ(2)列の同じ名称の行に データ(1)で発生しなかったデータがある場合後ろに追記していき、これがデータ(数値)が最小データ(1)、最大データ(40)のシートがある所まで集計していく形にしたいのです。 名称が4セルとなっているのは、1列目が同じ名称の物が来ることがあり、2列目にその細かい違いがでるので4セルとなっています。名称の中には、英文字の大文字と小文字だけの違いのものがあり、それを区別して集計することもあります。(物品Aと物品a) 簡単にできそうかな?と思っていたのですが、各シートを集計用シートの対応の列に転記する事や ないものをどんどん下へ追記していく、大文字と小文字を区別させるといういくつもの考え方が必要で調べても中々望む形を得られなかったので質問させていただきました。 少々複雑(?)かもしれませんが、なにとぞ宜しくお願い致します

  • フォルダー内の支店ごとのブックを集計するマクロを

     エクセル2010で、1つのフォルダ内にある複数のエクセルファイル(約100支店分)から、日次売上等の集計マクロを作成したいのですが方法がわかりません。 上司からの依頼を受け、ひとり悩んでましたが・・・で皆さんに相談です。ご協力お願いします ■基本条件 ・毎日、支店がフォルダ内の売上情報を入力(更新)し保存する。 ・全店とも中身は同書式同形式ファイル  例)実績報告A店.XLS、実績報告B店.XLS・・・ ■マクロ(集計.XLS)でやりたいこと ・各支店ブックの実績シートから、支店名(A5)・売上A(B5)・売上B(C5)を転記し明細表の作成 ・集計表の作成 マクロど素人の私に、どなたか教えていただけますでしょうか? よろしくお願いします。

専門家に質問してみよう