質問編集履歴
4
検索条件の追記・コードの可視性改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,6 +16,12 @@
|
|
16
16
|
|
17
17
|
1.検索ワードを入力
|
18
18
|
|
19
|
+
検索ワードは同じ行の場合はAND条件、
|
20
|
+
|
21
|
+
異なる行の場合はOR条件です。
|
22
|
+
|
23
|
+
画像では「ぶっかけ AND 九州」 or「ハヤシライス」となります。
|
24
|
+
|
19
25
|
2.日付ごとに並んだシート(リストが作成されている)を検索し、条件に合致する行(2行で1項目)をコピー
|
20
26
|
|
21
27
|
3.検索ワードが入力されているシートに検索結果を貼り付けする
|
@@ -66,8 +72,6 @@
|
|
66
72
|
|
67
73
|
Application.ScreenUpdating = False
|
68
74
|
|
69
|
-
|
70
|
-
|
71
75
|
With ThisWorkbook.Sheets("検索")
|
72
76
|
|
73
77
|
Dim i As Long
|
@@ -186,8 +190,6 @@
|
|
186
190
|
|
187
191
|
|
188
192
|
|
189
|
-
|
190
|
-
|
191
193
|
'シート配列から検索していく
|
192
194
|
|
193
195
|
Dim p As Long
|
@@ -214,112 +216,82 @@
|
|
214
216
|
|
215
217
|
For i = 7 To endRow Step 2
|
216
218
|
|
219
|
+
Dim HHH As Integer
|
220
|
+
|
221
|
+
Dim c As Range
|
222
|
+
|
217
223
|
|
218
224
|
|
225
|
+
With tmpSheet.Rows(i & ":" & i + 1)
|
226
|
+
|
227
|
+
|
228
|
+
|
219
|
-
|
229
|
+
For HHH = LBound(bkey) To UBound(bkey)
|
230
|
+
|
220
|
-
|
231
|
+
Set c = .Find(What:=bkey(HHH), matchbyte:=False, _
|
232
|
+
|
233
|
+
LookIn:=xlValues, LookAt:=xlPart) '---(1)
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
'条件に当てはまるセルがあるかどうかを判定
|
238
|
+
|
221
|
-
|
239
|
+
If c Is Nothing Then
|
222
240
|
|
223
241
|
|
224
242
|
|
243
|
+
GoTo TTT
|
244
|
+
|
245
|
+
End If
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
Next HHH
|
250
|
+
|
251
|
+
'繰返し検索し、条件を満たす行を検索する
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
'######################## この部分の処理で時間がかかっている
|
258
|
+
|
225
|
-
|
259
|
+
tmpSheet.Rows(i & ":" & i + 1).Copy _
|
260
|
+
|
226
|
-
|
261
|
+
ThisWorkbook.Sheets("検索").Rows(k)
|
262
|
+
|
227
|
-
|
263
|
+
'#########################
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
k = k + 2
|
270
|
+
|
271
|
+
End With
|
272
|
+
|
273
|
+
TTT:
|
228
274
|
|
229
275
|
|
230
276
|
|
231
|
-
For HHH = LBound(bkey) To UBound(bkey)
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
Set c = .Find(What:=bkey(HHH), matchbyte:=False, _
|
236
|
-
|
237
|
-
LookIn:=xlValues, LookAt:=xlPart) '---(1)
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
'条件に当てはまるセルがあるかどうかを判定
|
242
|
-
|
243
|
-
If c Is Nothing Then
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
GoTo TTT
|
248
|
-
|
249
|
-
End If
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
Next HHH
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
'繰返し検索し、条件を満たす行を検索する
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
'######################## この部分の処理で時間がかかっている
|
268
|
-
|
269
|
-
tmpSheet.Rows(i & ":" & i + 1).Copy _
|
270
|
-
|
271
|
-
ThisWorkbook.Sheets("検索").Rows(k)
|
272
|
-
|
273
|
-
'#########################
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
k = k + 2
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
End With
|
288
|
-
|
289
|
-
TTT:
|
290
|
-
|
291
|
-
|
292
|
-
|
293
277
|
Next i
|
294
278
|
|
295
279
|
Next p
|
296
280
|
|
281
|
+
Next b
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
If flag Then
|
286
|
+
|
287
|
+
ThisWorkbook.Sheets("検索").Cells(5, "C").ClearContents
|
288
|
+
|
289
|
+
End If
|
290
|
+
|
297
291
|
|
298
292
|
|
299
|
-
|
300
|
-
|
301
|
-
Next b
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
If flag Then
|
308
|
-
|
309
|
-
ThisWorkbook.Sheets("検索").Cells(5, "C").ClearContents
|
310
|
-
|
311
|
-
End If
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
293
|
Application.ScreenUpdating = True
|
320
294
|
|
321
|
-
|
322
|
-
|
323
295
|
End Sub
|
324
296
|
|
325
297
|
```
|
3
データ変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
![イメージ説明](
|
1
|
+
![イメージ説明](cd84b82db76bab95d93ea9d8b70f07d3.png)
|
2
|
-
|
2
|
+
|
3
|
-
![イメージ説明](38504
|
3
|
+
![イメージ説明](0ed0b3adfbe8503c9948bdd1d616c838.png)
|
4
4
|
|
5
5
|
|
6
6
|
|
2
画像を掲示しました。(検索結果とデータシートの例)
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
![イメージ説明](15f9a8ba5edeca1f36c2961ea5fde852.png)
|
2
|
+
|
3
|
+
![イメージ説明](3850428e12b25e02f19c2e1236c84c5f.png)
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
|
1
9
|
VBAにて高速処理ができないか悩んでいます。
|
2
10
|
|
3
11
|
|
@@ -16,13 +24,27 @@
|
|
16
24
|
|
17
25
|
|
18
26
|
|
27
|
+
一番上の画像が検索結果を表示するシート、二番目の画像がデータイメージです。
|
28
|
+
|
29
|
+
|
30
|
+
|
19
31
|
プログラム自体は作動しますが、各シートごとに検索結果をコピーし、都度貼り付けをしている(ソースコードを##################で囲んだ部分です。)ため、処理に時間がかかっています。
|
20
32
|
|
21
33
|
|
22
34
|
|
23
35
|
実際、#####で囲んだ部分をコメントアウトして実行すると処理速度が劇的に速くなります。
|
24
36
|
|
25
|
-
(通常は40秒かかり、#######で囲んだ部分をコメントアウトして実行した場合は、5秒で処理が終了
|
37
|
+
(通常は40秒かかり、#######で囲んだ部分をコメントアウトして実行した場合は、5秒で処理が終了しました。
|
38
|
+
|
39
|
+
1シート当り:約20件のデータ
|
40
|
+
|
41
|
+
シート数:400シート
|
42
|
+
|
43
|
+
170件ヒットした場合です。)
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
26
48
|
|
27
49
|
|
28
50
|
|
1
コード部分をMarkdown記法のタグにて囲みました。 処理遅延の原因となっている箇所をコメントアウトした場合の処理速度結果を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,14 +20,24 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
+
実際、#####で囲んだ部分をコメントアウトして実行すると処理速度が劇的に速くなります。
|
24
|
+
|
25
|
+
(通常は40秒かかり、#######で囲んだ部分をコメントアウトして実行した場合は、5秒で処理が終了)
|
26
|
+
|
27
|
+
|
28
|
+
|
23
29
|
そのため、配列に格納するすれば高速処理が可能になるのではと思い、考えましたがどうすればよいのかわかりません。
|
24
30
|
|
25
31
|
|
26
32
|
|
33
|
+
|
34
|
+
|
27
35
|
アドバイスください。
|
28
36
|
|
29
37
|
|
30
38
|
|
39
|
+
```ここに言語を入力
|
40
|
+
|
31
41
|
Sub 検索用()
|
32
42
|
|
33
43
|
|
@@ -289,3 +299,5 @@
|
|
289
299
|
|
290
300
|
|
291
301
|
End Sub
|
302
|
+
|
303
|
+
```
|