Excel VBA自动筛选问题(字段值)

Excel VBA自动筛选问题(字段值),vba,excel,filter,field,Vba,Excel,Filter,Field,我找不到代码问题的解决方案 假设我有这个记录集 AR1 AR2 AR7 AR8 AR9 2015-02-28 Residential Pool ND,5 BDM IT0538700021972 2015-02-28 Residential Pool ND,5 BDM IT0538700021972 2015-02-28 Residential Pool ND,5 BDM IT053870002197

我找不到代码问题的解决方案

假设我有这个记录集

AR1         AR2                 AR7     AR8 AR9
2015-02-28  Residential Pool    ND,5    BDM IT0538700021972
2015-02-28  Residential Pool    ND,5    BDM IT0538700021972
2015-02-28  Residential Pool    ND,5    BDM IT0538700021972
2015-02-28  Residential Pool    ND,6    BDM IT0538700021972
自动过滤器应在AR7列(第3列)中查找ND,5

这是一个非常有效的代码,直到AR代码不再重要。正如您在记录集中看到的,没有AR3、AR4、AR5和AR6列。所以代码中的FilterField I dim对于AR1代码是1,对于AR2代码是2,但是对于AR7代码不是3(它是7)。因此,代码返回一个错误,因为自动筛选范围中没有第7列。但真正的问题是,即使在该范围内有第7列,结果也可能为零或错误,因为自动筛选将在第7列而不是第3列中搜索

Sub LookFor_ND5()

'--------- Dim FilterField (the number of the column).
'          ActiveCell.Value comes from another workbook and lets say 
'          in this case is AR7, so FilterField will be 7 (instead of 3)

    Dim FilterField As String
    FilterField = Replace(ActiveCell.Value, "AR", "")

'--------- Dim Criteria1 (the ND_Code I have to search) -----------

    Dim ND_Code As String
    ND_Code = "ND,5"

'--------- Some code to get the right working path and file -----------

    Dim currentFldr As String
    DirNames = Split(ActiveWorkbook.Path, "\")
    currentFldr = DirNames(UBound(DirNames))

    PathString = Replace(currentFldr, "-", "")

    Dim fileName As String
    fileName = ActiveWorkbook.Path & "\Mutuiresidenziali_" & PathString & "_RES.xlsx"

    Set WB = Workbooks.Open(fileName)

'--------- AutoFilter -----------
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$E$6000").AutoFilter Field:=FilterField, Criteria1:=ND_Code

End Sub
如何修复代码以使其正常工作?要使自动筛选在右列中查找代码

考虑到我不能向文件中添加假列以适应范围

希望我能解释清楚。。。提前谢谢


工作代码
可以使用“匹配”获取列位置:

ActiveSheet.Range("$A$1:$E$6000").AutoFilter Field:=Application.Match("AR7", Activesheet.Rows(1), 0), Criteria1:=ND_Code

你试过让FilterField变长还是变整数?天哪,这么简单?效果很好。我在哪里可以为每个有相同问题的人显示工作代码?谢谢@奥雷齐奥向每个人展示工作代码,并通过给罗里投赞成票并点击复选标记来感谢他。无需标记标题
(已解决)
,尽管这是其他网站的常见做法。@FreeMan对工作代码没问题,对已解决的东西没问题(我将删除它),但我不能投Rory一票,因为我没有足够的声誉点。。。这里的新用户,必须学习如何使用论坛:)您可以单击
已回答的
复选标记。这实际上会给你几分!另外,一定要参加这次旅行,这会有帮助的。
ActiveSheet.Range("$A$1:$E$6000").AutoFilter Field:=Application.Match("AR7", Activesheet.Rows(1), 0), Criteria1:=ND_Code