回答編集履歴

4

こちらかがいいかも

2020/07/03 01:41

投稿

mako1972
mako1972

スコア383

test CHANGED
@@ -1,8 +1,10 @@
1
1
  記載するVBAはCollectionとワークシート関数を使ったサンプルになります。
2
2
 
3
+ 日付が全て6月でしたので7月、8月、9月などダミーで作成してください。
4
+
3
5
  まず、シート名をdataと仮定しE列に集計用の応募月を追加するマクロを実行します(手作業でも構いません)。
4
6
 
5
- (日付が全て6月でしたので7月、8月、9月などダミーで作成してください)
7
+
6
8
 
7
9
  次に、集計結果のシートを手作業で集計1として集計用シートを作成しておいてください(集計用マクロを実行するたびに手作業でシートの内容をクリアしてください)。
8
10
 

3

こちらかがいいかも

2020/07/03 01:41

投稿

mako1972
mako1972

スコア383

test CHANGED
@@ -1,22 +1,16 @@
1
+ 記載するVBAはCollectionとワークシート関数を使ったサンプルになります。
2
+
1
- ご提示されているシート名をdataと仮定しE列に集計用の応募月を追加するマクロで
3
+ まず、シート名をdataと仮定しE列に集計用の応募月を追加するマクロを実行します(手作業も構いません)
2
-
3
- 実際は、関数などの手作業でも構いませんが、この行をクロス集計で使います。
4
+
4
-
5
- (日付が全て6月でしたので7月、8月、9月などダミーで作成しておきます
5
+ (日付が全て6月でしたので7月、8月、9月などダミーで作成してください
6
-
6
+
7
- また、集計結果のシートを手作業で集計1として集計用シートを作成しておいてください。
7
+ 次に、集計結果のシートを手作業で集計1として集計用シートを作成しておいてください(集計用マクロを実行するたびに手作業でシートの内容をクリアしてください)
8
-
9
- また、サンプルですので、集計1はご自身で集計前にクリアしてください。
8
+
10
-
11
-
12
-
13
- VBAで加工マクロを実行したのち、集計1シートの内容をクリアして各マクロを実行してみてください。
9
+
14
-
10
+
15
- 最後に、最後の集計条件が理解できなかったため未作成です。
11
+ 最後に、集計条件で応募数と求人数の区別つかなかったため最後の集計条件は未作成です。
16
-
17
-
18
-
12
+
19
- 以上 よろしくお願いします。
13
+ 参考になるかはわかりませんが、よろしくお願いします。
20
14
 
21
15
 
22
16
 

2

こちらかがいいかも

2020/07/03 01:39

投稿

mako1972
mako1972

スコア383

test CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  実際は、関数などの手作業でも構いませんが、この行をクロス集計で使います。
4
4
 
5
+ (日付が全て6月でしたので7月、8月、9月などダミーで作成しておきます)
6
+
5
7
  また、集計結果のシートを手作業で集計1として集計用シートを作成しておいてください。
6
8
 
7
9
  また、サンプルですので、集計1はご自身で集計前にクリアしてください。

1

こちらかがいいかも

2020/07/03 01:29

投稿

mako1972
mako1972

スコア383

test CHANGED
@@ -1,8 +1,22 @@
1
- まずは、ご提示されているシートE列に集計用の応募月を加るマクロです。
1
+ ご提示されているシート名をdataと仮定しE列に集計用の応募月をるマクロです。
2
-
2
+
3
- 実際は、関数などの手作業でも構いません。
3
+ 実際は、関数などの手作業でも構いませんが、この行をクロス集計で使います
4
+
4
-
5
+ また、集計結果のシートを手作業で集計1として集計用シートを作成しておいてください。
6
+
7
+ また、サンプルですので、集計1はご自身で集計前にクリアしてください。
8
+
9
+
10
+
11
+ VBAで加工マクロを実行したのち、集計1シートの内容をクリアして各マクロを実行してみてください。
12
+
13
+ 最後に、最後の集計条件が理解できなかったため未作成です。
14
+
15
+
16
+
5
- シート名をdataといます。
17
+ 以上 よろくお願ます。
18
+
19
+
6
20
 
7
21
  ```VBA
8
22
 
@@ -47,3 +61,273 @@
47
61
  End Sub
48
62
 
49
63
  ```
64
+
65
+
66
+
67
+ ```VBA
68
+
69
+ Sub ユニーク応募数の集計()
70
+
71
+
72
+
73
+ Dim c As New Collection
74
+
75
+ Dim maxrow As Double
76
+
77
+ Dim i As Double
78
+
79
+
80
+
81
+ On Error Resume Next
82
+
83
+
84
+
85
+ maxrow = Sheets("data").Range("A1").End(xlDown).Row
86
+
87
+
88
+
89
+
90
+
91
+ For i = 2 To maxrow
92
+
93
+
94
+
95
+ c.Add Sheets("data").Range("D" & i), Format(Sheets("data").Range("D" & i).Value, "yyyy/mm/dd")
96
+
97
+ Next i
98
+
99
+
100
+
101
+
102
+
103
+ On Error GoTo 0
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+ For i = 1 To c.Count
112
+
113
+ Sheets("集計1").Range("A" & i) = c(i)
114
+
115
+ Sheets("集計1").Range("B" & i) = WorksheetFunction.CountIfs(Sheets("data").Range("D:D"), Sheets("集計1").Range("A" & i))
116
+
117
+
118
+
119
+ Next i
120
+
121
+
122
+
123
+ End Sub
124
+
125
+ ```
126
+
127
+ ```VBA
128
+
129
+ Sub 掲載企業名の集計()
130
+
131
+
132
+
133
+ Dim MyCompany As New Collection
134
+
135
+ Dim Mymonth As New Collection
136
+
137
+ Dim maxrow As Double
138
+
139
+ Dim i As Double
140
+
141
+ Dim j As Double
142
+
143
+
144
+
145
+ '■Collectionをつかって重複を省く集計行の一覧を作成
146
+
147
+
148
+
149
+ On Error Resume Next
150
+
151
+
152
+
153
+ maxrow = Sheets("data").Range("A1").End(xlDown).Row
154
+
155
+
156
+
157
+ For i = 2 To maxrow
158
+
159
+
160
+
161
+ MyCompany.Add Sheets("data").Range("A" & i), Sheets("data").Range("A" & i) '■掲載企業名
162
+
163
+ Mymonth.Add Sheets("data").Range("E" & i), Sheets("data").Range("E" & i) '■応募月(yyyy/mm)
164
+
165
+ Next
166
+
167
+
168
+
169
+ On Error GoTo 0
170
+
171
+
172
+
173
+
174
+
175
+ '■掲載企業名を展開する(集計用)
176
+
177
+
178
+
179
+ For i = 1 To MyCompany.Count
180
+
181
+ Sheets("集計1").Range("A" & i + 1).Value = MyCompany(i)
182
+
183
+ Next
184
+
185
+
186
+
187
+ '■集計月を展開する(集計用)
188
+
189
+
190
+
191
+ For i = 1 To Mymonth.Count
192
+
193
+ Sheets("集計1").Cells(1, i + 1).Value = Mymonth(i)
194
+
195
+ Next
196
+
197
+
198
+
199
+ '■ワークシート関数でクロス集計を行う
200
+
201
+ For i = 2 To MyCompany.Count + 1
202
+
203
+
204
+
205
+ For j = 2 To Mymonth.Count + 1
206
+
207
+
208
+
209
+ With Sheets("集計1")
210
+
211
+ .Cells(i, j) = WorksheetFunction.CountIfs(Sheets("data").Range("A:A"), .Cells(i, 1), Sheets("data").Range("E:E"), .Cells(1, j))
212
+
213
+
214
+
215
+ End With
216
+
217
+
218
+
219
+ Next j
220
+
221
+ Next i
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+ End Sub
230
+
231
+ ```
232
+
233
+ ```VBA
234
+
235
+ Sub 都道府県の集計()
236
+
237
+
238
+
239
+ Dim Mypref As New Collection
240
+
241
+ Dim Mymonth As New Collection
242
+
243
+ Dim maxrow As Double
244
+
245
+ Dim i As Double
246
+
247
+ Dim j As Double
248
+
249
+
250
+
251
+ '■Collectionをつかって重複を省く集計行の一覧を作成
252
+
253
+
254
+
255
+ On Error Resume Next
256
+
257
+
258
+
259
+ maxrow = Sheets("data").Range("A1").End(xlDown).Row
260
+
261
+
262
+
263
+ For i = 2 To maxrow
264
+
265
+
266
+
267
+ Mypref.Add Sheets("data").Range("C" & i), Sheets("data").Range("C" & i) '■都道府県
268
+
269
+ Mymonth.Add Sheets("data").Range("E" & i), Sheets("data").Range("E" & i) '■応募月(yyyy/mm)
270
+
271
+ Next
272
+
273
+
274
+
275
+ On Error GoTo 0
276
+
277
+
278
+
279
+
280
+
281
+ '■都道府県名を展開する(集計用)
282
+
283
+
284
+
285
+ For i = 1 To Mypref.Count
286
+
287
+ Sheets("集計1").Range("A" & i + 1).Value = Mypref(i)
288
+
289
+ Next
290
+
291
+
292
+
293
+ '■集計月を展開する(集計用)
294
+
295
+
296
+
297
+ For i = 1 To Mymonth.Count
298
+
299
+ Sheets("集計1").Cells(1, i + 1).Value = Mymonth(i)
300
+
301
+ Next
302
+
303
+
304
+
305
+ '■ワークシート関数でクロス集計を行う
306
+
307
+ For i = 2 To Mypref.Count + 1
308
+
309
+
310
+
311
+ For j = 2 To Mymonth.Count + 1
312
+
313
+
314
+
315
+ With Sheets("集計1")
316
+
317
+ .Cells(i, j) = WorksheetFunction.CountIfs(Sheets("data").Range("C:C"), .Cells(i, 1), Sheets("data").Range("E:E"), .Cells(1, j))
318
+
319
+
320
+
321
+ End With
322
+
323
+
324
+
325
+ Next j
326
+
327
+ Next i
328
+
329
+
330
+
331
+ End Sub
332
+
333
+ ```