Excelで作られた個人別の残業管理表をもとに、グループ全体の残業管理表を作る方法を紹介します。
イメージとしてはこんな感じです。
個人別の残業管理表から”時間数”だけを抜き出し、メンバー全員の残業時間をまとめるといった感じですね。
それでは、まず”外枠”から作ってみます。
Option Explicit
Sub 残業時間()
End Sub
Option Explicit
Sub 残業時間()
Worksheets(“まとめ”).Cells(4, 3).Value = Worksheets(“社員A”).Cells(4, 5).Value
End Sub
実行するとこのようになりました。 (画面の都合上、2月3日以降は割愛します)
つぎに、2月の末日までデータが反映されるように、日付の変数を次のように設定します。
- 社員Aの日付のカウンタ変数・・・i ※社員Aのシートの4行目から31日分
- まとめの日付のカウンタ変数・・・j ※ループを1回実行したら1ずつ進む
Option Explicit
Sub 残業時間()
Dim i As Long ’日数のカウンタ変数(まとめ)
Dim j As Long ’日数のカウンタ変数(個別)
i = 4 ’日数の始まりは4行目から
For j = 4 To 35 ’まとめの4行目から31日分
Worksheets(“まとめ”).Cells(j, 3).Value = Worksheets(“社員A”).Cells(i, 5).Value
i = i + 1 ’1行進む
Next
End Sub
実行すると次のようになりました。
今は社員Aのみデータを反映していますが、こんどはシート全員分のデータが反映できるようにします。
まずは”社員A”のシートを検索し、シート名が”社員A”ならば”まとめ”シートの”社員A”の列にデータを反映するようにします。
Option Explicit
Sub 残業時間()
Dim i As Long ‘日数のカウンタ変数(個別)
Dim j As Long ’日数のカウンタ変数(まとめ)
Dim k As Long ‘シートのカウンタ変数
i = 4 ’日数の始まりは4行目から
For j = 4 To 35 ‘まとめの4行目から31日分
For k = 1 To Worksheets.Count ‘ワークシートを1つずつ見てみる
If Sheets(k).Name = “社員A” Then
Worksheets(“まとめ”).Cells(j, 3).Value = Worksheets(“社員A”).Cells(i, 5).Value
i = i + 1 ‘1行進む
End If
Next
Next
End Sub
実行すると先ほどと同じ結果になります
最後に、他の社員のデータも反映できるように6行目から13行目までをコピペし、社員名と”まとめ”シートへデータを反映させる列を変えてやれば、全員分のデータが反映されるようになります。
Option Explicit
Sub 残業時間()
Dim i As Long ‘日数のカウンタ変数(個別)
Dim j As Long ’日数のカウンタ変数(まとめ)
Dim k As Long ‘シートのカウンタ変数
i = 4 ’日数の始まりは4行目から
For j = 4 To 35 ‘まとめの4行目から31日分
For k = 1 To Worksheets.Count ‘ワークシートを1つずつ見てみる
If Sheets(k).Name = “社員A” Then
Worksheets(“まとめ”).Cells(j, 3).Value = Worksheets(“社員A”).Cells(i, 5).Value
i = i + 1 ‘1行進む
End If
Next
Next
i = 4 ’日数の始まりは4行目から
For j = 4 To 35 ’まとめの4行目から31日分
For k = 1 To Worksheets.Count ’ワークシートを1つずつ見てみる
If Sheets(k).Name = “社員B” Then
Worksheets(“まとめ”).Cells(j, 4).Value = Worksheets(“社員B”).Cells(i, 5).Value
i = i + 1 ’1行進む
End If
Next
Next
i = 4 ’日数の始まりは4行目から
For j = 4 To 35 ‘まとめの4行目から31日分
For k = 1 To Worksheets.Count ‘ワークシートを1つずつ見てみる
If Sheets(k).Name = “社員C” Then
Worksheets(“まとめ”).Cells(j, 5).Value = Worksheets(“社員C”).Cells(i, 5).Value
i = i + 1 ‘1行進む
End If
Next
Next
End Sub
これで全員分のデータが反映されるようになりました
もしメンバーを追加したいときは、6行目から13行目までをコピペし、
- 社員名
- ”まとめ”シートへデータを反映させる列
を指定してあげればOKです。