回答編集履歴

1

サンプルコードの追記

2023/06/16 13:17

投稿

hatena19
hatena19

スコア34347

test CHANGED
@@ -22,3 +22,53 @@
22
22
  Debug.Print "配列3: " & Join(Dic.Keys, ",")
23
23
  End Sub
24
24
  ```
25
+
26
+ ---
27
+ 共通の値の配列, 配列1にしかない値の配列, 配列2にしかない値の配列も必要なのなら、
28
+
29
+ ```vba
30
+ Sub Sample2()
31
+
32
+ Dim Array1() As Variant
33
+ Dim Array2() As Variant
34
+ Array1 = Array(1, 2, 3, 4, 7)
35
+ Array2 = Array(1, 2, 3, 5, 6, 8)
36
+
37
+ Dim Dic As Object
38
+ Set Dic = CreateObject("Scripting.Dictionary")
39
+
40
+ Dim I As Variant
41
+ For Each I In Array1
42
+ Dic(I) = "a"
43
+ Next
44
+ For Each I In Array2
45
+ Dic(I) = Dic(I) & "b"
46
+ Next
47
+
48
+ Dim ArrayIn() As Variant, cntIn As Long
49
+ Dim ArrayDif1() As Variant, cntDif1 As Long
50
+ Dim ArrayDif2() As Variant, cntDif2 As Long
51
+ Dim K As Variant
52
+ For Each K In Dic.Keys
53
+ Select Case Dic.Item(K)
54
+ Case "ab"
55
+ ReDim Preserve ArrayIn(cntIn)
56
+ ArrayIn(cntIn) = K
57
+ cntIn = cntIn + 1
58
+ Case "a"
59
+ ReDim Preserve ArrayDif1(cntDif1)
60
+ ArrayDif1(cntDif1) = K
61
+ cntDif1 = cntDif1 + 1
62
+ Case "b"
63
+ ReDim Preserve ArrayDif2(cntDif2)
64
+ ArrayDif2(cntDif2) = K
65
+ cntDif2 = cntDif2 + 1
66
+ End Select
67
+ Next
68
+
69
+ Debug.Print "共通の値: " & Join(ArrayIn, ",")
70
+ Debug.Print "配列1にしかない値: " & Join(ArrayDif1, ",")
71
+ Debug.Print "配列2にしかない値: " & Join(ArrayDif2, ",")
72
+ Debug.Print "配列3: " & Join(Dic.Keys, ",")
73
+ End Sub
74
+ ```