![](/img/trans.png)
[英]How to transfer criteria from string array to autofilter. VBA Excel
[英]Excel AutoFilter Criteria Variant to string
我正在嘗試將 AutoFilter 設置作為字符串。
我在工作表中將A1:A5
設置為:
Rows
valA
valB
valC
valD
然后我自動篩選工作表和 select Rows
值valA
、 valB
、 valC
。 (即,我已過濾掉Rows
值valD
。)
我運行以下 VBA:
Sub CaptureFilters()
With ActiveSheet.AutoFilter.Filters.Item(1)
Cells(1, 3).Value = Join(.Criteria1)
Cells(1, 4).Value = Replace(Join(.Criteria1), "@=", "")
End With
End Sub
現在工作表單元格C1
和D1
都給出#NAME?
錯誤,但他們的公式顯示=@valA =@valB =@valC
。
VBA 顯示.Criteria1
是Variant/String
的數組。
如何在工作表單元格中獲取.Criteria1
作為字符串值? 在此示例中,我想要一個包含字符串valA valB valC
的單元格。
重寫為
Sub CaptureFilters()
With ActiveSheet.AutoFilter.Filters.Item(1)
Cells(1, 3).Value2 = "'" & Join(.Criteria1)
Cells(1, 4).Value = "'" & Replace(Join(.Criteria1), "@=", "")
End With
End Sub
否則 Excel 會將字符串解釋為公式,因為它以 a =
開頭。
或者你試試
Sub CaptureFiltersA()
With ActiveSheet.AutoFilter.Filters.Item(1)
Cells(1, 3).Value2 = Replace(Join(.Criteria1), "=", " ")
Cells(1, 4).Value = Replace(Join(.Criteria1), "=", "")
End With
End Sub
文本自動過濾器有四種情況——一個值、兩個和兩個以上。 要處理所有這些:
Sub CaptureFiltersA()
With ActiveSheet.AutoFilter.Filters.Item(1)
If IsArray(.Criteria1) Then ' CASE: More than two values
Cells(1, 3).Value = Replace(Join(.Criteria1, ","), "=", "")
Else
Cells(1, 3).Value = Replace(.Criteria1, "=", "") ' CASE: One value
If .Count = 2 Then ' CASE: Two values
Cells(1, 3).Value = Cells(1, 3).Value + "," + Replace(.Criteria2, "=", "")
End If
End If
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.