首页 > 解决方案 > Excel VBA自动过滤一系列数字

问题描述

大家好,我在使用 vba 中的自动过滤功能时遇到了麻烦。在我的过滤条件之一中,我试图将其设置为过滤掉任何大于 99999 的数字(它会过滤掉邮政编码,有时会在末尾添加一个额外的数字)。我尝试了几种不同的方法,但似乎无法使这件事起作用。其他每一行都按预期工作,但我放注释的那一行。感谢您的帮助!

shFullYearData.Range(shFullYearData.Cells(1, 1), shFullYearData.Cells(1, LastColumn)).Select
'shFullYearData.Range("A1:Z1").Select
Selection.AutoFilter
shFullYearData.Range(StartCell, shFullYearData.Cells(LastRow, LastColumn)).AutoFilter Field:=12, Criteria1:=PWSelection
shFullYearData.Range(StartCell, shFullYearData.Cells(LastRow, LastColumn)).AutoFilter Field:=26, Criteria1:=">=1"

'''shFullYearData.Range(StartCell, shFullYearData.Cells(LastRow, LastColumn)).AutoFilter Field:=18, Criteria1:="<100000",'''
'This line above isn't working properly to filter out any numbers above 100,000   
            
shFullYearData.Range(StartCell, shFullYearData.Cells(LastRow, LastColumn)).AutoFilter Field:=3, Operator:= _
    xlFilterValues, Criteria2:=Array(0, "12/31/2019")
shFullYearData.Range(StartCell, shFullYearData.Cells(LastRow, LastColumn)).Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlYes, Key2:=Range("B1"), Header:=xlYes
enter image description here

标签: excelvbaautofilter

解决方案


是否:Operator:=xlAnd解决您的问题?

.AutoFilter Field:=18, Criteria1:= _
        "<999999", Operator:=xlAnd

如果数字被格式化为字符串(在单元格的左侧并且在单元格的左上角有一个绿色三角形),您可以使用以下宏将它们转换为数字。

Sub string_to_numb()

For Each cel In Selection.Cells

    cel.Value = cel * 1

Next
End Sub

在那之后过滤应该起作用,因为在那之前vba无法过滤数字,因为没有数字,只有由数字组成的文本。


推荐阅读