今回は、「酒店舗別」「分類別」で集計を行います。
Withの使い方を理解して頂きたいです。
【課題】
シート「Sheet1」、「Sheet1_回答」を用意します。
シート「Sheet1」には、「酒店舗」「分類」「売上」を記載します。
シート「Sheet1_回答」には、シート「Sheet1」の酒店舗・分類別に売上を集計する。
※前提条件 シート「Sheet_回答」には、すべての酒店舗と分類が必ずあるとします。
【VBA】
Sub syukei_Clic() Dim i As Long Dim ixR As Long Dim ixC As Long Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet1_回答") ws2.Range("A1").CurrentRegion.Offset(1, 1).ClearContents With ws1 For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row ixC = 2 Do Until ws2.Cells(1, ixC) = .Cells(i, 1) ixC = ixC + 1 Loop ixR = 2 Do Until ws2.Cells(ixR, 1) = .Cells(i, 2) ixR = ixR + 1 Loop ws2.Cells(ixR, ixC) = ws2.Cells(ixR, ixC) + .Cells(i, 3) Next End With End Sub
簡単な説明
ws2.Range("A1").CurrentRegion.Offset(1, 1).ClearContents
・初期クリアーします
「With ws1」〜「End With」は「Sheet1」について処理を行う。
・「.Cells」、「.Rows.Count」については、「ws1.Cells」、「ws1.Rows.Count」を意味します。
・これが、「同じオブジェクト名を省略」ということになります。
「Do Until ws2.Cells(1, ixC) = .Cells(i, 1)」はループ処理を行う。
・「Sheet1」の酒店舗から「Sheet1_回答」と同じ酒店舗を探す。
「Do Until ws2.Cells(ixR, 1) = .Cells(i, 2)」はループ処理を行う。
・「Sheet1」の酒名から「Sheet1_回答」と同じ酒名を探す。
「ws2.Cells(ixR, ixC) = ws2.Cells(ixR, ixC) + .Cells(i, 3)」は、売上合計を算出する。
・「Sheet1」の各酒店舗、各酒名の売上を、「Sheet1_回答」に設定する。
あなたのお役に立てるなら、コピーして使用してください。
今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。
VBA開発もしておりますので開発のご要望があればご連絡をください。
VBA開発依頼受付はこちらから