簡體   English   中英

Excel AutoFilter Criteria Variant to string

[英]Excel AutoFilter Criteria Variant to string

我正在嘗試將 AutoFilter 設置作為字符串。

我在工作表中將A1:A5設置為:

Rows
valA
valB
valC
valD

然后我自動篩選工作表和 select RowsvalAvalBvalC (即,我已過濾掉RowsvalD 。)

我運行以下 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

現在工作表單元格C1D1都給出#NAME? 錯誤,但他們的公式顯示=@valA =@valB =@valC

VBA 顯示.Criteria1Variant/String的數組。 Excel VBA 檢查

如何在工作表單元格中獲取.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM