セルB12〜B23の「Supplier Timesheet Workbook」に日付があります。セルi12〜i23のその日の作業時間。これが行われた曜日に応じて、時間は「マスターワークブック」の特定の列に移動する必要があります。VBAは、平日の従属時間を正しい列に配置するのに役立ちます。
が、これはに行くために必要なコードは次のとおりです。
Public Sub Consolidate_to_master()
Dim wksMaster As Worksheet
Dim wks As Worksheet
Dim rng As Range
Dim i As Integer
Dim wkb As Workbook
Dim Filename As String
Dim Path As String
Dim Wb1 As Workbook, wb2 As Workbook
Path = "\\ttsnaInbox folder\" 'CHANGE PATH
Filename = Dir(Path & "*.xl??")
Set wksMaster = ActiveWorkbook.Worksheets(1) ' or ThisWorkbook
i = 3
Do While Len(Filename) > 0 'IF NEXT FILE EXISTS THEN
Set wkb = Workbooks.Open(Path & Filename)
With wkb.Worksheets(1)
For Each rng In .Range("L12:L23")
' if there is a value in the cell
If rng <> vbNullString Then
Range(Selection, Cells(Rows.Count, Selection.Column).End(xlUp)).Select
wksMaster.Range("A" & i) = .Range("J8")
wksMaster.Range("B" & i) = "1234"
wksMaster.Range("C" & i) = .Range("J9")
wksMaster.Range("D" & i) = "10"
wksMaster.Range("E" & i) = rng
wksMaster.Range("F" & i) = ""
wksMaster.Range("G" & i) = ""
wksMaster.Range("H" & i) = ""
wksMaster.Range("I" & i) = ""
wksMaster.Range("J" & i) = ""
wksMaster.Range("K" & i) = ""
wksMaster.Range("L" & i) = ""
wksMaster.Range("M" & i) = ""
i = i + 1
End If
Next
End With
wkb.Close True
Filename = Dir
Loop
End Sub
平日関数が挿入されたが、これを行う方法を本当にわからないことができる場所です。
wksMaster.Range("G" & i) = ""
wksMaster.Range("H" & i) = ""
wksMaster.Range("I" & i) = ""
wksMaster.Range("J" & i) = ""
wksMaster.Range("K" & i) = ""
wksMaster.Range("L" & i) = ""
wksMaster.Range("M" & i) = ""
下の画像はマスターシートですか?どのように最初の5〜6列にデータを入れていますか?正しい列に値を設定するには、平日の関数を使用して列Fからオフセットするのが簡単でなければなりません。使用する行が分かりにくいことがわかります。単に次の空き行に割り当てるだけですか?行が追加され続けているのか、入力された有限数が上書きされていますか?この質問はもっと詳細が必要なように感じます。 – QHarr