質問編集履歴
2
内容の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
エクセルのVBAを勉強中なのですがコードが分からないのでアドバイスをお願いします。
|
2
2
|
|
3
|
-
やりたいことは確認シートに入力された日付の範囲内で出勤した日数が
|
3
|
+
やりたいことは確認シートのE2とG2に入力された日付の範囲内で出勤した日数がE3とG3で入力された日数出勤してる人だけを抽出してそのシート名を確認シートのA2からA3・A4・・・と返したいです。以下書いてみたコードです。これだと1週目と2週目に3日出勤した人は2回名前が載ることになってしまいます。2週目だけや3週目だけ○日出勤した人を抽出するにはどうしたらいいでしょうか。よろしくお願いします。
|
4
4
|
|
5
5
|
※1週間ごとに出勤した日数は計算されます。例えば、Aさんのシートの10/1~10/7まで欄にシフトを入力するとAさんのシートのJ9:J13の結合されたセルに勤務日数が返ります。
|
6
6
|
|
7
|
-
※第2週(10/8~10/14まで)のシフトを入力するとJ16:J20の結合セルに出勤日数が返ります
|
7
|
+
※第2週(10/8~10/14まで)のシフトを入力するとJ16:J20の結合セルに出勤日数が返ります
|
8
|
+
|
9
|
+
※Aさん以下B・C・D・・・と同じシートです。
|
10
|
+
|
11
|
+
※入力は〇週ではなく日付で行いたいです。
|
8
12
|
|
9
13
|
```vba
|
10
14
|
|
1
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,21 +20,21 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
keyword = Worksheets("
|
23
|
+
keyword = Worksheets("確認").Cells(3, 5).Value
|
24
24
|
|
25
25
|
For i = 1 To Worksheets.Count
|
26
26
|
|
27
|
-
If Worksheets(i).Name <> "
|
27
|
+
If Worksheets(i).Name <> "確認" Then
|
28
28
|
|
29
29
|
For 日付行1 = 9 To 36
|
30
30
|
|
31
31
|
If Worksheets(i).Cells(日付行1, 10).Value = keyword Then
|
32
32
|
|
33
|
-
Worksheets("
|
33
|
+
Worksheets("確認").Activate
|
34
34
|
|
35
|
-
lastrow = Worksheets("
|
35
|
+
lastrow = Worksheets("確認").Cells(Rows.Count, 1).End(xlUp).row
|
36
36
|
|
37
|
-
Worksheets("
|
37
|
+
Worksheets("確認").Cells(lastrow + 1, 1).Value = Worksheets(i).Name
|
38
38
|
|
39
39
|
End If
|
40
40
|
|