2017-11-23 2 views
1

セルB12〜B23の「Supplier Timesheet Workbook」に日付があります。セルi12〜i23のその日の作業時間。これが行われた曜日に応じて、時間は「マスターワークブック」の特定の列に移動する必要があります。VBAは、平日の従属時間を正しい列に配置するのに役立ちます。

これより下の2つの写真を見ると意味があります。ここでenter image description here

enter image description here

が、これはに行くために必要なコードは次のとおりです。

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) = "" 
+0

下の画像はマスターシートですか?どのように最初の5〜6列にデータを入れていますか?正しい列に値を設定するには、平日の関数を使用して列Fからオフセットするのが簡単でなければなりません。使用する行が分かりにくいことがわかります。単に次の空き行に割り当てるだけですか?行が追加され続けているのか、入力された有限数が上書きされていますか?この質問はもっと詳細が必要なように感じます。 – QHarr

答えて

0

単純にピボットテーブルを使用して行うことができます。

カスタム 'dddを' 書式使って曜日名を取得します(check this link

は、類似したデータは、添付のスクリーンショットを参照してください。 enter image description here

+0

1枚の場合ははい。マクロはサプライヤのタイムシートワークブックを100冊読み込み、それらをマスタワークブックに配置します。私はマクロの助けが必要です。 – pran86

関連する問題