【Excel マクロ初心者】複数シートを集計してみた

スポンサーリンク
エクセル
スポンサーリンク

どうも! そこらへんの社会時です!

今回は、このように複数シートのデータを1枚のシートに集計するマクロを作成してみました。
(1番左のシートが集計シートで、真ん中と右のシートは集計されるシートになります。)

実際にマクロを動かしてみた動画は下記になります。
最後までこの記事を読んで頂くと下記のマクロを記載できるようになります。

アドセンス 広告

STEP1:まずは1枚のシートのみを集計してみる

下記のマクロを実行すると無事、集計シートに集計することができました・・・・
ですが・・・このやり方だとシートが数十枚あった場合、すごく大変だと思ったので
別のやり方を考えてみました!

Sub エクセルシート集計()

Sheets(“集計”).Range(“B3”).Value = Sheets(“東京”).Range(“B2”).Value
シート(東京)のB2セル を シート集計のB3セルに記載する

End Sub

STEP2:まずは1枚のシートのみを集計してみる(シートのインデックス指定)

STEP1のやり方だと、作業量が増えてしまうのでその改善方法を探していたら、
下記の記事を見つけたので、それを参考にシートのインデックス指定をやってみました!

Excel VBAでIndexもシート名も使わず、シートオブジェクトをダイレクトに指定する方法 - t-hom’s diary
Excel VBAでシートを指定するには、名前指定・インデックス指定・オブジェクト名の直接指定がある。 最後の方法はあまり知られていないと思うが、とても便利なので是非活用してみてほしい。 一応おさらいとして、名前指定とインデックス指定のコードも掲載しておく。この記事では以下のようなシート構成のブックにおいて「帳票シート...

実際に記載したマクロがこちらになります。

Option Explicit

Sub エクセルシート集計()

Sheets(1).Range(“B3”).Value = Sheets(2).Range(“B2”).Value
シート2枚目のB2セル を シート1枚目のB3セルに記載する

Sheets(1).Range(“C3”).Value = Sheets(2).Range(“C2”).Value
シート2枚目のC2セル を シート1枚目のC3セルに記載する

End Sub

STEP1 と STEP2の違いをお分かり頂けただろうか?

STEP1:シート指定方法⇒Sheets(“シート名”)
STEP2:シート指定方法⇒Sheets(“シートの順番”)

STEP2のやり方ならば、for~Nextを使えばあとは連続で処理してくれるはずなのでSTEP3で実際やってみたいと思います!!

STEP③:For~Next関数を用いて自動化してみる

実際のマクロは下記になります。

Option Explicit

Sub エクセルシート集計()

Dim i
関数iを宣言

For i = 2 To 8
iを2~8繰り返す

Sheets(1).Cells(i + 1, 2).Value = Sheets(i).Range(“B2”).Value
i番目のシートのB2セルを1番目シートの(i+1 , 2)セルに記載する

Sheets(1).Cells(i + 1, 3).Value = Sheets(i).Range(“C2”).Value
i番目のシートのC2セルを1番目シートの(i+1 , 3)セルに記載する

Next

End Sub

いかがだったでしょうか?
そんなに難しい文も使っていないため、「意外と簡単!」と思えたのではないだろうか?
(2週間前の私なら・・・ちんぷんかんぷんでしたが・・・)

このようにExcelマクロは業務改善の可能性を秘めていいるので
ぜひ、一緒に学んでいきましょう!

コメント

タイトルとURLをコピーしました