teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記

2020/05/02 05:37

投稿

hatena19
hatena19

スコア34367

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
  ```