質問編集履歴

2

内容の修正

2020/10/26 22:29

投稿

syun0334
syun0334

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,14 @@
1
1
  エクセルのVBAを勉強中なのですがコードが分からないのでアドバイスをお願いします。
2
2
 
3
- やりたいことは確認シートに入力された日付の範囲内で出勤した日数が確認シートで入力された日数出勤してる人だけを抽出してそのシート名を確認シート返したいです。以下書いてみたコードです。これだと1週目と2週目に3日出勤した人は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

コードの修正

2020/10/26 22:28

投稿

syun0334
syun0334

スコア1

test CHANGED
File without changes
test CHANGED
@@ -20,21 +20,21 @@
20
20
 
21
21
 
22
22
 
23
- keyword = Worksheets("入力シート").Cells(3, 5).Value
23
+ keyword = Worksheets("確認").Cells(3, 5).Value
24
24
 
25
25
  For i = 1 To Worksheets.Count
26
26
 
27
- If Worksheets(i).Name <> "入力シート" Then
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("入力シート").Activate
33
+ Worksheets("確認").Activate
34
34
 
35
- lastrow = Worksheets("入力シート").Cells(Rows.Count, 1).End(xlUp).row
35
+ lastrow = Worksheets("確認").Cells(Rows.Count, 1).End(xlUp).row
36
36
 
37
- Worksheets("入力シート").Cells(lastrow + 1, 1).Value = Worksheets(i).Name
37
+ Worksheets("確認").Cells(lastrow + 1, 1).Value = Worksheets(i).Name
38
38
 
39
39
  End If
40
40