回答編集履歴
2
.
test
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
```vba
|
2
2
|
Option Explicit
|
3
|
-
|
4
3
|
Function Sabun(arr1, arr2, Optional mode = 0)
|
5
4
|
' 二つの配列から動作モードに従って新たな配列を返す関数
|
6
5
|
' 0:配列1と配列2に共通
|
@@ -9,7 +8,6 @@
|
|
9
8
|
' 3:配列1と配列2をマージ
|
10
9
|
|
11
10
|
Dim kyotu, only1, only2, merge, v
|
12
|
-
|
13
11
|
Set kyotu = CreateObject("Scripting.Dictionary")
|
14
12
|
Set only1 = CreateObject("Scripting.Dictionary")
|
15
13
|
Set only2 = CreateObject("Scripting.Dictionary")
|
@@ -19,7 +17,6 @@
|
|
19
17
|
merge(v) = v
|
20
18
|
only1(v) = v
|
21
19
|
Next
|
22
|
-
|
23
20
|
For Each v In arr2
|
24
21
|
merge(v) = v
|
25
22
|
If only1.Exists(v) Then
|
@@ -29,28 +26,23 @@
|
|
29
26
|
only2(v) = v
|
30
27
|
End If
|
31
28
|
Next
|
32
|
-
|
33
29
|
Select Case mode
|
34
30
|
Case 1: Sabun = only1.Keys
|
35
31
|
Case 2: Sabun = only2.Keys
|
36
32
|
Case 3: Sabun = merge.Keys
|
37
33
|
Case Else: Sabun = kyotu.Keys
|
38
34
|
End Select
|
35
|
+
End Function
|
36
|
+
```
|
39
37
|
|
40
|
-
|
38
|
+
```vba
|
41
|
-
|
42
39
|
Sub Sample()
|
43
|
-
Dim array1, array2, array3
|
40
|
+
Dim array1, array2, array3, i
|
44
41
|
array1 = Array(1, 2, 3, 4, 7)
|
45
42
|
array2 = Array(1, 2, 3, 5, 6, 8)
|
46
|
-
|
47
|
-
Dim i
|
48
43
|
For i = 0 To 3
|
49
44
|
array3 = Sabun(array1, array2, i)
|
50
45
|
Debug.Print i, Join(array3, vbTab)
|
51
46
|
Next
|
52
|
-
|
53
47
|
End Sub
|
54
|
-
|
55
|
-
|
56
48
|
```
|
1
.
test
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
Option Explicit
|
3
3
|
|
4
4
|
Function Sabun(arr1, arr2, Optional mode = 0)
|
5
|
+
' 二つの配列から動作モードに従って新たな配列を返す関数
|
6
|
+
' 0:配列1と配列2に共通
|
7
|
+
' 1:配列1のみに存在
|
8
|
+
' 2:配列2のみに存在
|
9
|
+
' 3:配列1と配列2をマージ
|
10
|
+
|
5
11
|
Dim kyotu, only1, only2, merge, v
|
6
12
|
|
7
13
|
Set kyotu = CreateObject("Scripting.Dictionary")
|