マクロを作る練習問題です。もちろん、それ以外に何をしてもいいです。あらかじめワークシートに何かを仕込んでおいたり、ワークシート関数を活用したり。本問題の主旨は、いかに「多くのアプローチを思いつくか」です。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チャンネルはこちら(動画一覧ページ)