回答編集履歴
1
コード追記
answer
CHANGED
@@ -43,4 +43,41 @@
|
|
43
43
|
|
44
44
|
sh2.Range("A1").Resize(R2, C2).Value = a2
|
45
45
|
End Sub
|
46
|
+
```
|
47
|
+
|
48
|
+
上記は元コードをそのまま配列用に修正してものですが、私がコーディングするなら下記のようなコードになります。
|
49
|
+
|
50
|
+
これなら、表がA1からでなくても、`.Range("A1")`の部分を書き換えるだけで済みます。
|
51
|
+
|
52
|
+
```vba
|
53
|
+
Sub 条件1()
|
54
|
+
Dim bk1 As Workbook, bk2 As Workbook
|
55
|
+
Set bk1 = ThisWorkbook 'Workbooks("A")
|
56
|
+
Set bk2 = ThisWorkbook 'Workbooks("B")
|
57
|
+
|
58
|
+
'表範囲取得
|
59
|
+
Dim rg1 As Range, rg2 As Range
|
60
|
+
Set rg1 = bk1.Worksheets("情報").Range("A1").CurrentRegion
|
61
|
+
Set rg2 = bk2.Worksheets("結果").Range("A1").CurrentRegion
|
62
|
+
' On Error Resume Next
|
63
|
+
|
64
|
+
Dim a1(), a2()
|
65
|
+
a1 = rg1.Value
|
66
|
+
a2 = rg2.Value
|
67
|
+
|
68
|
+
Dim i As Long, s As Long, x As Long, y As Long, z As Long
|
69
|
+
For i = 2 To UBound(a1, 1)
|
70
|
+
For s = 2 To UBound(a2, 1)
|
71
|
+
For x = 2 To UBound(a1, 2)
|
72
|
+
For y = 2 To UBound(a2, 2)
|
73
|
+
If a1(1, x) = a2(s, 1) And a1(i, 1) = a2(1, y) Then
|
74
|
+
a2(s, y) = a1(i, x)
|
75
|
+
End If
|
76
|
+
Next y
|
77
|
+
Next x
|
78
|
+
Next s
|
79
|
+
Next i
|
80
|
+
|
81
|
+
rg2.Value = a2
|
82
|
+
End Sub
|
46
83
|
```
|