ここに最初の投稿があるので、私は十分に明確であることを願っています。
作業しているワークシートにテーブルがあります。listObjectをクラスに渡しました。クラスは、そこからさまざまなデータを返すことができます。指定された列見出しに対してフィルタリングして、一意のリストを取得したいと思います。
私の質問はこれです:
フィルタリングされていない範囲全体を手動でループせずに、フィルタリングされたすべての行を含む範囲を返すことはできますか?
私の現在のコードは(フィルタリングされていない)範囲をループし、以下のように一意のエントリを探します。私のテストワークシートではかなりの時間がかかっているので、操作例では実行可能ではないと思います。
Public Function returnUniqueList(col As String) As Collection
' get unqiue lists from the table. Useful for things like LCPs or ballast types
' returns as list of strings
Dim i As Integer
Dim r As Excel.Range
Dim reqCol As Integer
Dim tempString As String
' collection of strings with the unique values
Dim retString As New Collection
reqCol = returnColId(col)
On Error GoTo errorCatch
' collect the unique values
For Each r In pLO.Range.rows
If Not InCollection(retString, r.Cells(1, reqCol)) Then
' add to the collection, including the key
If r.Cells(1, reqCol) <> "" Then
retString.Add r.Cells(1, reqCol), r.Cells(1, reqCol)
End If
End If
Next r
Set returnUniqueList = retString
Exit Function
errorCatch:
MsgBox "Error returning unique list: " + Err.Description
End Function