Excel VBAメモ: コレクションを使ってオートフィルタした値を重複なく配列に格納する方法
公開 2024/05/23 15:21
最終更新
-
オートフィルタしたあとのデータから重複なく可視セルの値を配列に格納する方法のメモです。
検索してもオートフィルタの基礎構文ばかりで見つけられず、ChatGPTに質問して回答してもらいました。Google検索がどんどん汚れていく中、今後はやっぱり生成AIに役割がシフトしていくんでしょうか。
その生成AIが参照にしているのも検索サイトというジレンマ。俺達の明日はどっちだ。
Sub オートフィルタした値を重複なく配列に格納()
Dim varDateNo() As String
Dim varRange As Range
Dim i As Byte
Dim uniqueValues As Collection
' シートの指定やオートフィルタなどの記述は省略
' A列の数式が入ってる可視セルのみをvarRangeに格納
Set varRange = .Range("A1:A5000").SpecialCells(xlCellTypeFormulas, 23).SpecialCells(xlCellTypeVisible)
' 重複のないコレクションを作成
Set uniqueValues = New Collection
On Error Resume Next ' 重複を避けるためにエラーを無視
For Each cell In varRange
uniqueValues.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0 ' エラー無視を終了
' コレクションを配列に変換
ReDim varDateNo(1 To uniqueValues.Count)
For i = 1 To uniqueValues.Count
varDateNo(i) = uniqueValues(i)
Next i
End Sub
検索してもオートフィルタの基礎構文ばかりで見つけられず、ChatGPTに質問して回答してもらいました。Google検索がどんどん汚れていく中、今後はやっぱり生成AIに役割がシフトしていくんでしょうか。
その生成AIが参照にしているのも検索サイトというジレンマ。俺達の明日はどっちだ。
