回答編集履歴

2

追記

2022/10/24 02:55

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -117,3 +117,49 @@
117
117
  GetAry = ary
118
118
  End Function
119
119
  ```
120
+
121
+ 追記
122
+ ---
123
+ 重複除去した二次元配列が欲しいとのことですが、
124
+ 次の処理次第ですが、連想配列に行データを格納した方がいいかもしれません。
125
+ 行の追加、削除が簡単かつ高速ですし、
126
+ 配列のようにFor Nextループで処理することも可能ですし、
127
+ IDでアクセスする場合、配列より高速に処理できます。
128
+
129
+ ```vba
130
+ Sub duplicateDeleteDic()
131
+ Dim ary As Variant
132
+ ary = GetAry()
133
+
134
+ Dim dic As Object
135
+ Set dic = CreateObject("Scripting.Dictionary")
136
+
137
+ Dim aryRow() As Variant
138
+ ReDim aryRow(UBound(ary, 2))
139
+
140
+ Dim r As Long, c As Long
141
+ For r = 0 To UBound(ary)
142
+ If dic.exists(ary(r, 0)) Then
143
+ If dic(ary(r, 0))(2) = "〇" Then dic.Remove (ary(r, 0))
144
+ End If
145
+ For c = 0 To UBound(aryRow)
146
+ aryRow(c) = ary(r, c)
147
+ Next
148
+ dic(ary(r, 0)) = aryRow
149
+ Next
150
+
151
+
152
+ '先頭行から順にアクセスする例
153
+ Dim vKey
154
+ For Each vKey In dic
155
+
156
+ ary = dic.Item(vKey)
157
+ Debug.Print ary(0), ary(1), ary(2), ary(3)
158
+ Next
159
+
160
+ '特定のIDの行データを取得
161
+ ary = dic("a3")
162
+ Debug.Print ary(0), ary(1), ary(2), ary(3)
163
+
164
+ End Sub
165
+ ```

1

不要なマークダウンを削除

2022/10/23 16:55

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -117,4 +117,3 @@
117
117
  GetAry = ary
118
118
  End Function
119
119
  ```
120
- ```