エクセルのVBAを勉強中なのですがコードが分からないのでアドバイスをお願いします。
やりたいことは確認シートのE2とG2に入力された日付の範囲内で出勤した日数がE3とG3で入力された日数出勤してる人だけを抽出してそのシート名を確認シートのA2からA3・A4・・・と返したいです。以下書いてみたコードです。
これだと9月28日から10月4日に〇日出勤した場合と、10月5日から10月11日に〇日出勤した人を別で抽出できないかなと思います。E2とG2で指定した日付の範囲内で対象のデータを抽出するにはどうしたらよいでしょうか。よろしくお願いします。
※1週間ごとに出勤した日数は計算されます。例えば、Aさんのシートの10/110/7まで欄にシフトを入力するとAさんのシートのJ9:J13の結合されたセルに勤務日数が返ります。10/14まで)のシフトを入力するとJ16:J20の結合セルに出勤日数が返ります
※第2週(10/8
※Aさん以下B・C・D・・・と同じシートです。
※すべての人が同じサイクルで日付は書いてあります。例えばB9にはすべての人が9月28日の日付が入っていて以下B36まで連続した日付が並んでいてB36は10月25日になります。翌月にはB9は全員10月26日になりB36は11月22日になります。
以下の画像は左側が日付や出勤日数を指定する確認シートで右側が各個人のシートでAさん以下全員同じフォーマットを使用しています。
VBA
1Sub 出勤日数() 2 3Dim i As Long 4Dim keyword As String 5Dim lastrow As Long 6 7keyword = Worksheets("確認").Cells(3, 5).Value 8For i = 1 To Worksheets.Count 9If Worksheets(i).Name <> "確認" Then 10For 日付行1 = 9 To 36 11If Worksheets(i).Cells(日付行1, 10).Value = keyword Then 12Worksheets("確認").Activate 13lastrow = Worksheets("確認").Cells(Rows.Count, 1).End(xlUp).row 14Worksheets("確認").Cells(lastrow + 1, 1).Value = Worksheets(i).Name 15End If 16Next 日付行1 17End If 18Next i 19 20End Sub
回答1件
あなたの回答
tips
プレビュー