Web Analytics Made Easy - StatCounter

Economics Of TEC

RPA,経済学,IT技術などに関する情報を発信しています。

【Excel VBA】複数のワークシートの値を集計する方法

f:id:WillSpecter:20200810141628j:plain

 やりたいこと

複数シートの値を集計

Excelで下記のようなデータがあるとします。

f:id:WillSpecter:20200816114325p:plain

シート001~003は同じレイアウトで中の数値が異なります。

 

各シートから請求番号、請求日、請求金額を集計して

以下のように一覧シートに転記する方法について紹介します。

f:id:WillSpecter:20200816114518p:plain

コードと解説は以下の通りです。
VBA コード】

Sub 一覧作成()
    Dim 一覧シート As Worksheet
    Dim 請求シート As Worksheet
    Dim シート番号 As Integer
    DimAs Integer
    
    'このマクロが記述されているワークブックという意味
    Set 一覧シート = ThisWorkbook.Worksheets("一覧")
    
    一覧シート.Select= 2
    For シート番号 = 2 To Worksheets.Count
        Set 請求シート = Worksheets(シート番号)
        
        '「一覧シート」を省略する
        With 一覧シート
            '書式を設定する
            .Cells(, 2).NumberFormatLocal = "yyyy年mm月dd日"
            .Cells(, 3).NumberFormatLocal = "#,##0"
            
            '長整数型に変換する
            .Cells(, 1) = CLng(請求シート.Range("A2"))
    
            
            .Cells(, 2) = 請求シート.Range("B2")
            .Cells(, 3) = 請求シート.Range("C2")
            
            '入力したセルに罫線を引く
            .Range(Cells(, 1), Cells(, 3)).Borders.LineStyle = True
        End With=+ 1
    Next シート番号
End Sub

ポイント

 集計するシートのレイアウトはそろえておく

コードをきれいに書くことも大切ですが、Excelシートのレイアウトをそろえておくことも大切です。

 

複数のワークシートにあるデータを参照して一覧表を作成する際は行と列の内容を同じにすることで集計も楽にできるようになります。

ワークシートは番号で指定することができる

ワークシートは左から順番に番号が振られています。

対象とするワークシートを操作する際は番号で指定するか、直接ワークシート名を指定して操作します。

 

今回のケースではWorksheets(1)Worksheets("一覧")は同じ意味となります。

ThisWorkbookプロパティ

実行しているマクロがあるブックはThisWorkbookプロパティで表すことができます。

 

ThisWorkbookプロパティは常に自分自身を表すので、ブック名を変更したときにマクロを修正する必要がないというメリットがあります。

NumberFormatLocalプロパティ

NumberFormatLocalプロパティを使うことで、セルの表示形式を設定することができます。

Excelの「セルの書式設定」→「ユーザー定義」を選択したときに表示される記号と同じように使用することができます。

 ひとこと

シート名は直接指定か番号で指定が可能ですが、

直接指定の場合は、シート名を変更するとエラーになってしまいます。

 

番号指定であれば、シート名を変更しても正常に動作しますが、シートを移動させると

想定していないシートを参照することになり上手く動作しません。

 

どちらが良いかは処理の内容によって変わってくるので、どちらの方法も知っておくことは大切です!(^^)!

 

できるシリーズはフルカラーでかなり細かいところまで画像を使って解説してあるのでオススメです!