【问题标题】:Use array of integers to AutoFilter multiple criteria使用整数数组自动筛选多个条件
【发布时间】:2020-05-25 23:06:37
【问题描述】:

我相信我遇到了数据类型问题。我正在从 Tableau 将工作表导出为 .csv,并尝试使用一列整数帐户 ID(导出为“常规格式”)并将这些值输入到数组中。然后我想在我的自动过滤器中使用该整数数组,这样我就可以过滤多个条件(我可能需要过滤许多整数 ID,而不仅仅是 2 个)。我还想按包含我要定位的组的 LOB 数组进行过滤。

当我直接从工作表设置bikeARR = Tester.Range("A2:A" & lastRow) 时,自动过滤器不起作用。我试图在 Excel 中将值格式化为“文本”。我还尝试在 ID 之前添加“'”以强制它显示为文本,但是当我直接从 Tester 表填写 bikeARR 时,我的过滤器不起作用。 如果我正确使用bikeARR = Array("145", "147", "11868", "281") TableauRCSAfilters。它将首先过滤 3 个 LOB,然后过滤每个 ID 值。我相信数组必须是文本值,但是当我填充数组时如何强制它发生?

Sub testArray()
Dim bikeARR, LOB As Variant
Dim TableauRCSA, Tester As Worksheet
Dim lastRow As Integer


Set TableauRCSA = Workbooks("BPM_Sprint_SharePoint_Tracking.xlsm").Sheets("IPRC_Publish_Process_Model_+_RC")
Set Tester = Workbooks("BPM_Sprint_SharePoint_Tracking.xlsm").Sheets("Tester")
lastRow = Tester.Cells(Rows.Count, 1).End(xlUp).Row
'bikeARR = Tester.Range("A2:A" & lastRow)

bikeARR = Array("145", "147", "11868", "281")

LOB = Array("CB", "CRE", "CIB")

TableauRCSA.Activate
TableauRCSA.Range("A1").AutoFilter Field:=1, Criteria1:=LOB, Operator:=xlFilterValues 'Filter for LOB element
TableauRCSA.Range("B1").AutoFilter Field:=2, Criteria1:=bikeARR, Operator:=xlFilterValues 'Filter for BIKE IDs
End Sub

【问题讨论】:

  • 是这样的吗? Dim bArr As Variant Dim tArr() As String bArr = Array(1, 2, 3, 4, 5) tArr = Split(Join(bArr, "|"), "|")

标签: arrays excel vba autofilter


【解决方案1】:

我能够找到解决问题的方法。使用CStr 函数,它将整数转换为字符串并在自动过滤器中工作。

Sub testArray()
Dim bikeARR, LOB As Variant
Dim TableauRCSA, Tester As Worksheet
Dim lastRow, total As Integer

Set TableauRCSA = Workbooks("BPM_Sprint_SharePoint_Tracking.xlsm").Sheets("IPRC_Publish_Process_Model_+_RC")
Set Tester = Workbooks("BPM_Sprint_SharePoint_Tracking.xlsm").Sheets("Tester")
lastRow = Tester.Cells(Rows.Count, 1).End(xlUp).Row

'Fill Team List array
ReDim bikeARR(0 To (lastRow - 1))
i = 0
For x = 2 To lastRow 'NOTE: Team list starts at C2
    bikeARR(i) = CStr(Tester.Cells(x, 1).Value) 'convert integer to string
    i = i + 1
Next x

LOB = Array("Commercial Banking", "Commercial Real Estate", "Corporate Banking")


TableauRCSA.Activate
TableauRCSA.Range("A1").AutoFilter Field:=1, Criteria1:=LOB, Operator:=xlFilterValues 
'Filter for LOB element
TableauRCSA.Range("A1").AutoFilter Field:=2, Criteria1:=bikeARR, Operator:=xlFilterValues 'Filter for BIKE IDs
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2013-08-01
    • 2018-11-09
    相关资源
    最近更新 更多