マクロを作る練習問題です。もちろん、それ以外に何をしてもいいです。あらかじめワークシートに何かを仕込んでおいたり、ワークシート関数を活用したり。本問題の主旨は、いかに「多くのアプローチを思いつくか」です。1つのマクロを作ればいい、ということではありません。ぜひ、チャレンジしてください。動画の後半で、やり方や考え方、ポイントや注意などを詳しく解説します。
↓左上にある
をクリックすると、チャンネル登録できます。ぜひ、チャンネル登録をお願いします。あなたのチャンネル登録が、私のやる気を維持向上してくれます(笑)
Sub Macro1()
''A列の名前をD列で検索する
Dim i As Long, A As Range
Application.ScreenUpdating = False
For i = 2 To 50001
Set A = Range("D2:D9").Find(Cells(i, 1))
A.Offset(0, 1) = A.Offset(0, 1) + Cells(i, 2)
Next i
Application.ScreenUpdating = True
End Sub
Sub Macro2()
''E列のセルにあらかじめ名前を設定しておく
Dim i As Long
Application.ScreenUpdating = False
For i = 2 To 50001
Range(Cells(i, 1)) = Range(Cells(i, 1)) + Cells(i, 2)
Next i
Application.ScreenUpdating = True
End Sub
Sub Macro3()
''オートフィルタで絞り込む
Dim i As Long
Application.ScreenUpdating = False
For i = 2 To 9
Range("A1").AutoFilter 1, Cells(i, 4)
Cells(i, 5) = WorksheetFunction.Subtotal(9, Range("B:B"))
Next i
Range("A1").AutoFilter
Application.ScreenUpdating = True
End Sub
Sub Macro4()
''SUMIF関数の結果を代入する
Dim i As Long
For i = 2 To 9
Cells(i, 5) = WorksheetFunction.SumIf(Range("A2:A50001"), Cells(i, 4), Range("B2:B50001"))
Next i
End Sub
Sub Macro5()
''セルにSUMIF関数を代入する
With Range("E2:E9")
.Value = "=SUMIF($A$2:$A$50001,D2,$B$2:$B$50001)"
.Value = .Value
End With
End Sub
動画で使用したブックのダウンロード(V2020-04-19.xlsm)
Office TANAKAのYouTubeチャンネルはこちら(動画一覧ページ)