質問のExcelの問題をVBAでやってみた。

 質問のExcel問題VBAでやってみました。(^_^;
 「.NET Framework」のArrayListクラスを使って、Unique()関数もどきを作ってみました。(^_^;
 3番目の参考URLをベースにして、5番目の参考URLから、sort付きのArrayList版に変形してみました。

Function mUnique(ary As Variant) As Variant
    Dim aryList As Object   '// ArrayList
    '// .NET FrameworkのArrayListクラスを利用する
    Set aryList = CreateObject("System.Collections.ArrayList")

    '// 配列をArrayListに重複なくコピー
    Dim a As Variant
    For Each a In ary
        If Not aryList.contains(a) Then
            aryList.Add (a)
        End If
    Next
    '// 並べ替え
    Call aryList.Sort

    '// 配列に再格納
    mUnique = aryList.ToArray
    Set aryList = Nothing
End Function

Sub macro1()
    Dim rng1 As Range: Set rng1 = Range("A3:A19")
    Dim rng2 As Range: Set rng2 = Range("B3:B19")
    Dim rng3 As Range: Set rng3 = Range("C3:C19")

    Dim uqAry1: uqAry1 = mUnique(rng1.Value)
    Dim cnt1 As Integer: cnt1 = UBound(uqAry1) - LBound(uqAry1) + 1
    Dim uqAry2: uqAry2 = mUnique(rng2.Value)
    Dim cnt2 As Integer: cnt2 = UBound(uqAry2) - LBound(uqAry2) + 1
    
    Dim i, j As Integer
    
    j = 0
    For i = 6 To 6 + cnt1 - 1
        Cells(2, i).Value = uqAry1(j)
        j = j + 1
    Next i

    j = 0
    For i = 3 To 3 + cnt2 - 1
        Cells(i, "E").Value = uqAry2(j)
        j = j + 1
    Next i
    
    For i = 6 To 6 + cnt1 - 1
        For j = 3 To 3 + cnt2 - 1
            Cells(j, i).Value = WorksheetFunction.SumIfs(rng3, rng1, Cells(2, i).Value, rng2, Cells(j, "E").Value)
        Next j
    Next i
    For j = 3 To 3 + cnt2 - 1
        Cells(j, "L").Value = WorksheetFunction.SumIfs(rng3, rng2, Cells(j, "E").Value)
    Next j        
End Sub

※参考URL
Excelの表データから各月毎の集計表を作成したいです - 人力検索はてな
UNIQUE関数で重複しない値を取り出す:Excel関数
VBAで重複のない配列(ユニーク,一意の配列)を作成する関数 - Qiita
Office TANAKA - Excel VBA Tips[重複しないリストを作る(1)]
VBAの配列を.NETのArrayListのSortで並べ替え | Excel作業をVBAで効率化