回答編集履歴

3

訂正します。

2021/10/02 00:25

投稿

ryusora
ryusora

スコア26

test CHANGED
@@ -1,4 +1,10 @@
1
+ > 他にもやり方があれば教えていただけますでしょうか。
2
+
3
+
4
+
5
+ データのシート(Sheet1)と整形するシート(1,2,3,4,,12)に分けるとコードも構造も簡単になります。
6
+
1
- 最初に通年集積させる表をSheet1に作ります。
7
+ 最初にデータを集積させる表をSheet1に作ります。
2
8
 
3
9
  A列に年月日 A2に初期値2021/1/1を、A3に式=A2+1をセット
4
10
 
@@ -10,8 +16,6 @@
10
16
 
11
17
  ![Sheet1](490bfddfd7573eabfcdfd3f03a6d7b0a.jpeg)
12
18
 
13
- データのシートと整形したシートに分けました。
14
-
15
19
  次にシート名「1」を作り
16
20
 
17
21
  A1を年を入力することにして、B1に数式=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
@@ -38,7 +42,7 @@
38
42
 
39
43
  A1を='1'!A1とします。
40
44
 
41
- 2月は29日までだから32・33行の数式を削除、
45
+ 2月は29日までだから32・33行の数式を削除、閏年に対処するため
42
46
 
43
47
  A31に=IF(MONTH(A30+1)=B1,A30+1,"")
44
48
 
@@ -98,7 +102,7 @@
98
102
 
99
103
  .Offset(0, 5).Value = (UF("myCont7").Value / 24) + (UF("myCont8").Value / 24 / 60)
100
104
 
101
- .Offset(0, 6).Value = .Offset(0, 5).Value - .Offset(0, 2).Value - (.Offset(0, 4).Value - .Offset(0, 3).Value)
105
+ .Offset(0, 6).Value = .Offset(0, 3).Value - .Offset(0, 2).Value - (.Offset(0, 5).Value - .Offset(0, 4).Value)
102
106
 
103
107
  .Offset(0, 7).Value = UF("myCont9").Value
104
108
 
@@ -156,7 +160,7 @@
156
160
 
157
161
  フォームのコードです。オブジェクト名はmyUFとし、ラベルLabel1,Label2を配置して、Label1に日付、Label2に曜日
158
162
 
159
- テキストボックスmycont1~mycont9を配置して、mycont1に出勤の時、mycont2に出勤の分、略
163
+ コンボ・テキストボックスmycont1~mycont9を配置して、mycont1に出勤の時、mycont2に出勤の分、略
160
164
 
161
165
  mycont9に備考をセットします。登録・修正は、フォームをハイドにしてSheet1で行います。
162
166
 

2

画像をアップしました。

2021/10/02 00:25

投稿

ryusora
ryusora

スコア26

test CHANGED
@@ -8,7 +8,9 @@
8
8
 
9
9
  条件付き書式で、土曜日は青色、日曜日は赤色にするといいかもしれません。
10
10
 
11
-
11
+ ![Sheet1](490bfddfd7573eabfcdfd3f03a6d7b0a.jpeg)
12
+
13
+ データのシートと整形したシートに分けました。
12
14
 
13
15
  次にシート名「1」を作り
14
16
 
@@ -18,51 +20,37 @@
18
20
 
19
21
  A3に=DATE(A$1,B$1,1)
20
22
 
23
+ A4に=A3+1
24
+
25
+ A4を33行まで数式をコピー
26
+
21
- B3に=INDEX(Sheet1!B$2:B$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
27
+ B3に数式=INDEX(Sheet1!B$2:B$10000,MATCH(A3,Sheet1!$A$2:$A$10000,0),1)を入れ
22
-
23
- C3に=INDEX(Sheet1!C$2:C$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
28
+
24
-
25
-
26
-
27
-
28
-
29
- H3に=INDEX(Sheet1!H$2:H$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
30
-
31
- この行を33行まで数式をコピーします。
29
+ b3アクティブにしてb3:H33を選択・数式貼り付け
32
30
 
33
31
  とすることで、Sheet1の2021年の1月分がコピーができます。
34
32
 
35
-
33
+ 画像では10000が1126になっています。
34
+
36
-
35
+ ![イメージ説明](628cae4ed03979561827461ee52fa782.jpeg)
36
+
37
- 同様にシート名「2」を作り
37
+ シート名「1」をコピーしてシート名「2」を作り
38
-
39
- A1を='1'!A1とします。B1に数式=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
38
+
40
-
41
- セットする2が表示されます。
39
+ A1='1'!A1ます。
40
+
42
-
41
+ 2月は29日までだから32・33行の数式を削除、
42
+
43
- A3に=DATE(A$1,B$1,1)
43
+ A31に=IF(MONTH(A30+1)=B1,A30+1,"")
44
-
44
+
45
- B3に=INDEX(Sheet1!B$2:B$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
45
+ B31に=IF(A31="","",INDEX(Sheet1!B$2:B$10000,MATCH($A31,Sheet1!$A$2:$A$10000,0),1))として、B31をアクティブにしてB31:H31を選択・数式貼り付け
46
-
47
- C3に=INDEX(Sheet1!C$2:C$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
48
-
49
-
50
-
51
-
52
-
53
- H2に=INDEX(Sheet1!H$2:H$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
54
46
 
55
47
  とすることで、Sheet1の2021年の2月分がコピーができます。
56
48
 
57
-
58
-
59
- 以下12までシートを作成します。
49
+ 以下12まで月に応じたシートを作成します。
60
-
61
-
62
-
50
+
63
- sheet1の入力・修正だけで済み、年の指定も1カ所で済みます。
51
+ sheet1の入力・修正だけで済み、年の指定もSheet1!A1の1カ所で済みます。
52
+
64
-
53
+ ![2](b3adfeb92b6fa33dd210ee5e51d7591a.jpeg)
65
-
66
54
 
67
55
  入力フォームは、Sheet1の目的とする日付のセルをクリックして開くこととし、
68
56
 
@@ -172,6 +160,8 @@
172
160
 
173
161
  mycont9に備考をセットします。登録・修正は、フォームをハイドにしてSheet1で行います。
174
162
 
163
+ ![イメージ説明](3972cef6bcd9d8cdc04ce0a3309547b4.jpeg)
164
+
175
165
  ```ここに言語を入力
176
166
 
177
167
  Private Sub UserForm_Initialize()

1

不要文の削除

2021/10/01 23:40

投稿

ryusora
ryusora

スコア26

test CHANGED
@@ -74,8 +74,6 @@
74
74
 
75
75
  Dim UF As Object
76
76
 
77
- Dim I As Long
78
-
79
77
 
80
78
 
81
79
  With Target
@@ -178,8 +176,6 @@
178
176
 
179
177
  Private Sub UserForm_Initialize()
180
178
 
181
- Dim I As Long
182
-
183
179
 
184
180
 
185
181
  With ActiveCell