回答編集履歴

1

コード修正、追加

2020/02/23 10:51

投稿

hatena19
hatena19

スコア34367

test CHANGED
@@ -28,10 +28,108 @@
28
28
 
29
29
 
30
30
 
31
+ Debug.Print Join(WorksheetFunction.Transpose(a))
32
+
31
33
  Debug.Print Join(d.Keys)
32
34
 
33
35
  End Sub
34
36
 
37
+ ```
35
38
 
36
39
 
40
+
41
+ 連想配列を使わずに自分で重複チェックするなら、
42
+
43
+ 重複排除配列に追加する前に、その配列に同じ値がないか確認して、なければ追加するというロジックを組めばいいでしょう。現状のコードをなるべく活かして、
44
+
45
+
46
+
47
+ ```vba
48
+
49
+ Sub sample()
50
+
51
+ Dim a() 'aという可変長配列変数宣言
52
+
53
+ Dim b() 'bという可変長配列変数宣言
54
+
55
+ Dim ws As Worksheet
56
+
57
+
58
+
59
+ Set ws = ThisWorkbook.Worksheets(1)
60
+
61
+ Dim n As Long
62
+
63
+ Dim k As Long
64
+
65
+ Dim f As Boolean
66
+
67
+ Dim i As Variant
68
+
69
+ n = 0
70
+
71
+ k = 0
72
+
73
+
74
+
75
+ Dim r As Long
76
+
77
+ For r = 4 To 10
78
+
79
+
80
+
81
+ ReDim Preserve a(n)
82
+
83
+ a(n) = ws.Cells(r, "C").Value
84
+
85
+
86
+
87
+ If n = 0 Then
88
+
89
+ ReDim Preserve b(k)
90
+
91
+ b(k) = a(n)
92
+
93
+ k = k + 1
94
+
95
+ ElseIf n > 1 Then
96
+
97
+ f = False
98
+
99
+ For Each i In b
100
+
101
+ If i = a(n) Then
102
+
103
+ f = True '重複あり
104
+
105
+ Exit For
106
+
107
+ End If
108
+
109
+ Next
110
+
111
+ If Not f Then '重複なしのとき
112
+
113
+ ReDim Preserve b(k)
114
+
115
+ b(k) = a(n)
116
+
117
+ k = k + 1
118
+
119
+ End If
120
+
121
+ End If
122
+
123
+ n = n + 1
124
+
125
+ Next
126
+
127
+
128
+
129
+ Debug.Print Join(a)
130
+
131
+ Debug.Print Join(b)
132
+
133
+ End Sub
134
+
37
135
  ```