VBA筛选器功能中的范围指的是什么

时间:2018-11-05 08:30:27

标签: excel vba filter

想检查ActiveSheet.Range(“ $ A $ 1:$ O $ 1583”)。AutoFilter Field:= 7,Criteria1:=“ =”,$ O $ 1583“范围指的是什么?

 sub Filter  
       ‘Remove empty cell in column G,K,L’
            Range("A2").Select
            Selection.End(xlDown).Select
            Selection.End(xlUp).Select
            Range("B2").Select
            ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=7, Criteria1:="="
            ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=11, Criteria1:="="
            ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=12, Criteria1:="="
            Rows("10:10").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
        ActiveSheet.ShowAllData
    End sub

1 个答案:

答案 0 :(得分:0)

ActiveSheet.Range("$A$1:$O$1583")是要过滤的范围。 A1是左上方的单元格,而O1583是右下方的单元格。此单元格位于第{1583列的O行中。

$标记可以删除,在VBA中它们并不重要。在Excel $中,符号表示美元符号后的行或列是固定的还是绝对的。当您复制Excel公式时,它们将复制该公式中相对于要复制到的位置的单元格。

尝试以下行以查看所选范围:

Sub TestMe
    ActiveSheet.Range("$A$1:$O$1583").Select
End Sub

范围很重要,因为它显示了过滤范围。想象一下这些数据:

enter image description here

运行此Range("A1:G10").AutoFilter后,您会看到过滤器中只有1到6的值,并且那里没有MORE。但是,如果您在从过滤器末尾到MORE(行11,12,13,14)的所有单元格中写入值,则该值将存在,因为Excel会认为这些值已经增加。

按列,您也不能过滤超出范围的字段。 Range("$A$2:$B$1583").AutoFilter Field:=3不起作用,因为您希望按2列范围内的第3列进行过滤。