gpt4 book ai didi

vba - 当我不确定它将是哪一列时,如何自动过滤?

转载 作者:行者123 更新时间:2023-12-04 22:02:00 25 4
gpt4 key购买 nike

我正在尝试自动处理各种报告,我只需要过滤和计算行数。我目前有一个 PowerShell 脚本,可以打开每个报告并运行一些宏。它只是处于工作状态,但我现在想让它变得更智能并捕捉一些失败,所以我可能会问一些问题,但我会坚持每个问题。

报告具有相似但不完全相同的布局。我正在寻找一个特定的列名然后自动过滤。我有一个非常基本且组合在一起的宏,目前可以执行此操作,并且(大部分时间)有效,例如,有时我想要的列是 A 或 B:

If Worksheets(1).Range("A1") Like "*word" Then
Worksheets(1).Range("A1").AutoFilter Field:=1, Criteria1:="=criteria1", Operator:=xlOr, Criteria2:="=criteria2"

ElseIf Worksheets(1).Range("B1") Like "*word" Then
Worksheets(1).Range("A1").AutoFilter Field:=2, Criteria1:="=criteria", Operator:=xlOr, Criteria2:="=criteria2"

希望这可以为您提供当前的图片。

我现在想要搜索我正在寻找的字段标题,然后过滤该列,因此如果将来报告格式发生变化,我的宏不会中断。类似于:
ColNum = Application.Match("*header", Range("A:Z"), 0)
ColNumInt = CInt(ColNum)

If ColNumInt > 0 Then
ActiveSheet.Range("A1").AutoFilter Field:=ColNumInt, Criteria1:="=criteria1*", Operator:=xlAnd
End If

但这给出了一个错误“范围类的自动过滤方法失败”,Googlefu 说要关闭过滤器,但它们已经关闭了。所以我有点卡住了。

最佳答案

这部分总是会失败:

ColNum = Application.Match("*header", Range("A:Z"), 0)

因为匹配只适用于一行或一列。所以你的代码实际上是返回错误 2042,然后由 CInt 转换为 2042。我猜你没有那么多数据列,因此自动过滤器失败了。利用:
ColNum = Application.Match("*header", Range("A1:Z1"), 0)
If Not IsError(ColNum) Then
...
End If

关于vba - 当我不确定它将是哪一列时,如何自动过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32882229/

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