回答編集履歴
2
コード追記
test
CHANGED
@@ -23,3 +23,30 @@
|
|
23
23
|
|
24
24
|
40万行とデータ数が多いので配列を使って高速化してます。
|
25
25
|
大量のデータを高速に処理するには配列の利用は必須ですので、 「VBA 配列 高速化」などのキーワードで検索すると解説ページが多数見つかりますので、それで研究してください。
|
26
|
+
|
27
|
+
追記
|
28
|
+
---
|
29
|
+
棚卸結果の項番がマスターの方に存在しない場合のエラー対策を追加
|
30
|
+
```vba
|
31
|
+
Public Sub Sample2()
|
32
|
+
Dim aryResult(), aryMaster()
|
33
|
+
With Workbooks("棚卸結果.xlsx").Worksheets(1)
|
34
|
+
aryResult = .Range(.Cells(2, 1), .Cells(Rows.Count, "D").End(xlUp)).Value
|
35
|
+
End With
|
36
|
+
ReDim aryMaster(1 To UBound(aryResult), 1 To 2)
|
37
|
+
|
38
|
+
Dim i As Long, n As Long
|
39
|
+
For i = 1 To UBound(aryResult)
|
40
|
+
n = aryResult(i, 4)
|
41
|
+
If n > 0 And n <= UBound(aryMaster) Then
|
42
|
+
aryMaster(n, 1) = aryResult(i, 1)
|
43
|
+
aryMaster(n, 2) = aryResult(i, 2)
|
44
|
+
Else
|
45
|
+
Debug.Print "エラー行番号: " & i + 1
|
46
|
+
End If
|
47
|
+
Next
|
48
|
+
|
49
|
+
Workbooks("マスタ.xlsx").Worksheets(1).Range("C2").Resize(UBound(aryMaster), 2).Value = aryMaster
|
50
|
+
End Sub
|
51
|
+
```
|
52
|
+
棚卸結果の項番がマスターの方に存在しない場合は、イミディエイトウィンドウにその行番号を出力するようしました。
|
1
コード修正
test
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
```vba
|
6
6
|
Public Sub Sample()
|
7
7
|
Dim aryResult(), aryMaster()
|
8
|
-
With Works
|
8
|
+
With Workbooks("棚卸結果.xlsx").Worksheets(1)
|
9
9
|
aryResult = .Range(.Cells(2, 1), .Cells(Rows.Count, "D").End(xlUp)).Value
|
10
10
|
End With
|
11
11
|
ReDim aryMaster(1 To UBound(aryResult), 1 To 2)
|
@@ -17,7 +17,7 @@
|
|
17
17
|
aryMaster(n, 2) = aryResult(i, 2)
|
18
18
|
Next
|
19
19
|
|
20
|
-
Works
|
20
|
+
Workbooks("マスタ.xlsx").Worksheets(1).Range("C2").Resize(UBound(aryMaster), 2).Value = aryMaster
|
21
21
|
End Sub
|
22
22
|
```
|
23
23
|
|