gpt4 book ai didi

excel - 使用可变 Excel 范围在自动筛选 VBA 中使用

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

我进行了很多搜索并尝试了很多不同的东西,但我无法让以下工作。

我有一系列我生成的 ID。然后,我想过滤一系列数据以生成仅包含指定 ID 的过滤输出。但是,无论我尝试什么,我的过滤输出只会返回一个空白范围。

请注意:每次运行此过程时,我的 ID 范围都会有所不同。我已经包含了一组非常简单的数据来说明我的观点——我的真实数据比我的例子复杂得多。

我目前拥有的代码:

Sub Test()

Dim Template As Workbook
Set Template = ThisWorkbook
Dim IDs, Report As Worksheet
Set IDs = Template.Worksheets("IDs")
Set Report = Template.Worksheets("Report")

Dim LastRowIDs As Long
LastRowIDs = IDs.Range("A" & IDs.Rows.Count).End(xlUp).Row

Dim IDsArray As Variant

IDsArray = IDs.Range("A2:A" & LastRowIDs)

Dim LastRowReport As Long
LastRowReport = Report.Range("A" & Report.Rows.Count).End(xlUp).Row

Report.AutoFilterMode = False
Report.Range("A1:C" & LastRowReport).AutoFilter Field:=1, Criteria1:=Application.Transpose(IDsArray), Operator:=xlFilterValues

End Sub

我会说我是 VBA 的基本用户,所以请解释任何答案。

Range to filter on

Data to be filtered

Desired output

最佳答案

Excel 喜欢将自动过滤数组作为字符串。因此,您需要将数组转换为字符串值。然后它工作。

Sub Test()

Dim Template As Workbook
Set Template = ThisWorkbook
Dim IDs, Report As Worksheet
Set IDs = Template.Worksheets("IDs")
Set Report = Template.Worksheets("Report")

Dim LastRowIDs As Long
LastRowIDs = IDs.Range("A" & IDs.Rows.Count).End(xlUp).Row

Dim IDsArray As Variant
Dim sTemp As String, i As Integer
IDsArray = Application.Transpose(IDs.Range("A2:A" & LastRowIDs))
For i = LBound(IDsArray) To UBound(IDsArray)
sTemp = "," & IDsArray(i) & sTemp
Next i
IDsArray = Split(Mid(sTemp, 2), ",")

Dim LastRowReport As Long
LastRowReport = Report.Range("A" & Report.Rows.Count).End(xlUp).Row

Report.AutoFilterMode = False
Report.Range("A1:C" & LastRowReport).AutoFilter Field:=1, Criteria1:=IDsArray, Operator:=xlFilterValues

End Sub

关于excel - 使用可变 Excel 范围在自动筛选 VBA 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405955/

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