VBA100本ノック 38本目:1シートを複数シートに振り分け

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。

今回は、Indexで配列を一行ずつ切り取って振り分ける方式を採用。

Sub VBA_100Knock_38()
    ' 祝日の辞書作成。
    Dim HolidayDict As Scripting.Dictionary
    Set HolidayDict = New Scripting.Dictionary
    
    Dim i As Long
        With Sheets("祝日")
            For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
                HolidayDict(.Cells(i, 1).Value) = .Cells(i, 2).Value
            Next
        End With
        
    ' 振り分け前情報。
    Dim SourceArray As Variant
        SourceArray = Sheets("売上").Range("A1").CurrentRegion
    
    Dim TargetSheet As Worksheet
    Dim TempArray As Variant
    Dim TargetDate As Date
        For i = 2 To UBound(SourceArray)
            ' 各レコードを切り出し。
            TempArray = WorksheetFunction.Index(SourceArray, i, 0)
            TargetDate = TempArray(1)
            If HolidayDict.Exists(TargetDate) Or _
               WorksheetFunction.Weekday(TargetDate, 2) >= 6 Then
                Set TargetSheet = Sheets("土日祝")
            Else
                Set TargetSheet = Sheets("平日")
            End If
                
            TargetSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 6) = TempArray
        Next
End Sub

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。