練習問題 - リストからピボットテーブルのような縦横集計表を作ってください


マクロを作る練習問題です。もちろん、それ以外に何をしてもいいです。あらかじめワークシートに何かを仕込んでおいたり、ワークシート関数を活用するのも自由です。Foe NextとCellsを使って、セルを1つずつ順番に操作するイメージがあれば、それほど難しくはないでしょう。解説では参考までに、4通りの考え方をご紹介しています。

↓左上にあるをクリックすると、チャンネル登録できます。ぜひ、チャンネル登録をお願いします。あなたのチャンネル登録が、私のやる気を維持向上してくれます(笑)

Sub Macro1()
    Dim i As Long, j As Long, k As Long
    For i = 2 To 101
        For j = 2 To 6
            If Cells(i, 1) = Cells(j, 5) Then Exit For
        Next j
        For k = 6 To 8
            If Cells(i, 2) = Cells(1, k) Then Exit For
        Next k
        Cells(j, k) = Cells(j, k) + Cells(i, 3)
    Next i
End Sub
Sub Mcro2()
    Dim i As Long, A As Range, B As Range
    For i = 2 To 101
        Set A = Range("E2:E6").Find(Cells(i, 1))
        Set B = Range("F1:H1").Find(Cells(i, 2))
        Cells(A.Row, B.Column) = Cells(A.Row, B.Column) + Cells(i, 3)
    Next i
End Sub
Sub Macro3()
    Dim i As Long, j As Long
    For i = 2 To 6
        For j = 6 To 8
            Range("A1").AutoFilter 1, Cells(i, 5)
            Range("A1").AutoFilter 2, Cells(1, j)
            Cells(i, j) = WorksheetFunction.Subtotal(9, Range("C:C"))
        Next j
    Next i
    Range("A1").AutoFilter
End Sub
Sub Macro4()
    With Range("F2:H6")
        .Value = "=SUMIFS($C$2:$C$101,$A$2:$A$101,$E2,$B$2:$B$101,F$1)"
        .Value = .Value
    End With
End Sub

動画で使用したブックのダウンロード(V2020-04-27.xlsm)

Office TANAKAのYouTubeチャンネルはこちら(動画一覧ページ)