gpt4 book ai didi

vba - 根据用户输入应用多个过滤器 (VBA)

转载 作者:行者123 更新时间:2023-12-04 20:34:40 24 4
gpt4 key购买 nike

我想问用户:

  • 将过滤器应用于哪个字段/列?
  • 要应用多少个过滤器?

  • 我想将这些 n 个过滤器作为输入并将它们应用于该列的字段。

    引用这些图片:
    Before applying filters ,
    After applying filters to Column A

    代码:
    Sub MultiFilter()
    Dim colNumber As Integer, numberOfFilters As Integer
    Dim filters(10) As String

    'Column number to apply filters to
    colNumber = InputBox("Enter column number to apply filter to (Column A = 1, B = 2, etc.)")

    'Number of filters to apply
    numberOfFilters = InputBox("Number of filters to apply to Column " & colNumber)

    'Take multiple filters as input
    For i = 0 To numberOfFilters - 1
    filters(i) = InputBox("Filter #" & i + 1)
    Next i

    'Apply multiple filters
    With ThisWorkbook.Sheets("Sheet1")
    .Activate
    .Range("A1").Select
    .Range(Selection, Selection.End(xlToRight)).Select
    Selection.AutoFilter
    For i = 0 To numberOfFilters - 1
    'ISSUE!
    Selection.AutoFilter field:=colNumber, Criteria1:=filters(i)
    Next i
    End With
    End Sub

    输入:1、2、A、B

    我意识到我正在选择 Criteria1多次。我遇到了以下代码:
    Range("A1:D10").AutoFilter Field:=1, Criteria1:=Array("A", "B"), Operator:=xlFilterValues
    上面的代码完美运行,但我必须硬编码值“A”和“B”。有没有办法用 n 个用户输入替换它?

    任何帮助,将不胜感激!

    编辑:
    更进一步,如何将列数作为用户输入并将多个过滤器应用于多个列?

    例子:
    (引用图片)

    列:1、2(“文档类型”、“年份”)
    过滤器:第 1 列中的 2 个(“A”、“C”)、第 2 列中的 2 个(“2016”、“2017”)

    最佳答案

    尝试替换所有 With简单的集团:

      'Apply multiple filters
    Sheets("Sheet1").Cells.AutoFilter colNumber, Filters, xlFilterValues

    此外,正如@Jeeped 所述,您需要调整 filters 的大小根据用户输入的数组
    Dim filters() As String ' <--- dont specify size here
    ....
    'Number of filters to apply
    numberOfFilters = InputBox("Number of filters to apply to Column " & colNumber)
    Redim filters(0 to numberOfFilters - 1) As String '<-- resize according to user input

    关于vba - 根据用户输入应用多个过滤器 (VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44484803/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com