フォルダ内にある複数のエクセルファイルを串刺し集計して合計した表を自動で作成するという処理についてはVBAマクロが一番よさそうです。
エクセルで、その都度手動で串刺し集計をするのはけっこうたいへんだし、間違いが起きやすいです。他のツールも検討してみましたが、エクセルを使える環境にある人なら追加料金なしで使えてメンテナンスもしやすいといういう特徴を踏まえると、VBAマクロが一番適していました。
なお、このマクロはChatGPTで対話しながら作成しましたので割と簡単に作ることができました。
複数ファイルのエクセルを串刺し集計するマクロを作りました
ひとつひとつのエクセルは個別原価計算を含んだ受注表です
今回のケースは、受注型ビジネスなので、見積もりや受注はひとつひとつが個別対応が必要なので、ひとつのエクセルファイルになっています。
▼例えば以下のような構造です(サンプルデータ)
このようなエクセルファイルが毎月100件ほどあるとして、月次でその集計をどうするかが悩みのタネだったということです。(旅行代理店が個別の受注を管理するようなイメージです)
ここまで個別の受注管理を自動計算されているのなら、月次集計も自動計算したいですね。
エクセルの串刺し計算
エクセルの串刺し計算は、複数のファイルの同じセルを合計する処理ができます。しかし、その処理をいざやってみようとするとけっこう難しいです。
実行するための手順は以下のとおりです。
・計算したいすべてのエクセルを開いておく(100ファイルあれば100です)
・合計計算したい合計用エクセルを開き、串刺し集計したいセルごとにすべてのファイルの名前とセル名を入力します(100ファイルあれば100回で、セルの数だけ必要)
これらの処理が終われば、合計用エクセルファイルには自動計算できます。
しかし、課題がいくつかあります。
・開くファイルが多すぎるとPCのメモリが圧迫し動作が不安定になる
・毎月同じ処理をしなければならないのでかなり煩雑
・個別ファイルの追加や修正があると合計用エクセルファイルも修正が必要になる
毎月の作業なので、できるだけ完結に処理をしたいので、手作業による串刺し集計はあまり現実的ではありません。
マイクロソフトのヘルプを参考記事として紹介しておきます。
実際に串刺し集計する手順なども紹介されています。
なお、マイクロソフトは「串刺し集計」のことは「3-D参照」という表現にしているようです。つまり「3-D参照」=「串刺し集計」ととらえてよさそうです。
同じフォルダ内にあれば自動的に集計してくれるマクロ
というわけで、ここはVBAマクロを使って自動実行することにしました。
VBAとかマクロとか聞き慣れない言葉を聞くとちょっと拒否感があるかもしれませんが、やってみると意外に簡単だったりします。自動実行したい処理が定番のルーチンだったりするとマクロがわりとはまります。
サンプルデータを使って串刺し集計した結果は以下のとおりです。
▼自動集計マクロは以下のような仕様です
「Ctrl+k」というショートカットキーで実行します
実行手順
1.対象とするフォルダを選択します(ファイルではないので注意ください)
2.フォルダ内のエクセルファイルをすべて開きます
3.指定したセルを串刺し集計します
(いちおう色をつけて区別していますが、マクロではセル指定です)
もう少し便利にするための機能追加もしたいところですが、まずはここまです。
作成したマクロは以下のとおりです
Sub 串刺し集計()
‘
‘ 串刺し集計 Macro
‘ フォルダ内のエクセルをすべて串刺し集計をする
‘
Dim wsSummary As Worksheet
Dim cell As Range
Dim targetRng As Range
Dim folderPath As String
Dim fileName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim targetCell As Range‘ 集計用のブックとシートを設定
Set wsSummary = ThisWorkbook.Sheets(“Sheet1”) ‘ Sheet1を集計用シートとして指定
Set targetRng = wsSummary.UsedRange‘ フォルダを選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = “フォルダを選択してください”
.AllowMultiSelect = False
If .Show = -1 Then
folderPath = .SelectedItems(1)
Else
MsgBox “フォルダが選択されませんでした”
Exit Sub
End If
End With‘ フォルダ内のすべてのエクセルファイルを開く
fileName = Dir(folderPath & “\*.xls*”)
Do While fileName <> “”
Set wb = Workbooks.Open(folderPath & “\” & fileName)
Set ws = wb.Sheets(1) ‘ 1つ目のシートを対象とする‘ 集計を行いたいセル・範囲を指定
Set targetRange = Union(wsSummary.Range(“D8:D24”), wsSummary.Range(“G3”), wsSummary.Range(“H3”))For Each specificCell In targetRange
Set targetCell = ws.Range(specificCell.Address)
specificCell.Value = specificCell.Value + targetCell.Value
Next specificCell‘ ブックを閉じる
wb.Close SaveChanges:=False
fileName = Dir
LoopMsgBox “集計が完了しました”
‘
End Sub
マクロの実行はショートカットキーを割り当てることもできますが、ボタンのほうが便利ですね。
こんな感じでボタンをつけました。
このマクロを集計したいエクセルに実装してマクロ実行可能なファイル形式(.xlsm)で保存します。拡張子が(.xlsx)ではなく(.xlsm)となっており、最後の一文字がマクロの(m)になっているのが特徴です。アイコンも変化します。
拡張子の違いは
https://wa3.i-3-i.info/diff29excel.html
で紹介されていますので気になる方はご覧になってみてください。
このマクロはChatGPTで作成しています
さて、このマクロですが、ChatGPTとやりとりすることで完成することができました。これまでだったら、エンジニアさんに発注するレベルの内容なのに対話型AIでサクサクとできてしまうのがすごいですね。
ChatGPTに関する記事はこちらです。
ChatGPTではVBAマクロだけではなくJavaScriptやhtmlなどの言語も書いてくれるので、エンジニアでなくてもできる領域が広がりました。
この記事を書いた遠田幹雄は中小企業診断士です
遠田幹雄は経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係る総合的なコンサルティング活動を展開しています。実際にはWEBマーケティングやIT系のご依頼が多いです。
民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣や中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者など
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。
お問い合わせは電話ではなくお問い合わせフォームからメールにておねがいします。新規の電話番号からの電話は受信しないことにしていますのでご了承ください。
【反応していただけると喜びます(笑)】
記事内容が役にたったとか共感したとかで、なにか反応をしたいという場合はTwitterやフェイスブックなどのSNSで反応いただけるとうれしいです。
遠田幹雄が利用しているSNSは以下のとおりです。
facebook https://www.facebook.com/tohdamikio
ツイッター https://twitter.com/tohdamikio
LINE https://lin.ee/igN7saM
チャットワーク https://www.chatwork.com/tohda
また、投げ銭システムも用意しましたのでお気持ちがあればクレジット決済などでもお支払いいただけます。
※投げ銭はデジタルコンテンツ購入という通販のしくみにしました。
※投げ銭は100円からOKです。シャレですので笑ってください(笑)