Scripting.Dictionary を使います。
Sub 支社別集計()
Dim Sheet1, Sheet2 As Worksheet
Const COL店舗CD = 1 ' 店舗CDの列
Const COL分類CD = 3 ' 分類CDの列
Const COL売上額 = 10 ' 売上額
Dim MaxRow As Long ' 最終行
Dim key As String ' 検索キー
Dim c, r As Long
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set Sheet1 = Worksheets("売上明細") ' 明細シート
Set Sheet2 = Worksheets("売上集計") ' 集計シート
MaxRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row ' 最終行を求める
' 売上明細を連想配列へ読み込む
With Sheet1
For r = 2 To MaxRow ' 最終行
key = .Cells(r, COL店舗CD).Value & .Cells(r, COL分類CD).Value ' 店舗CD & 分類CD
dicT(key) = dicT(key) + .Cells(r, COL売上額).Value ' 売上額
Next
End With
' 集計シートへの書き出し
With Sheet2
For c = 3 To 12 ' 列
For r = 4 To 12 ' 行
key = .Cells(2, c).Value & .Cells(r, 1).Value ' 店舗CD & 分類CD
.Cells(r, c) = dicT(key)
Next
Next
End With
End Sub