想检查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
答案 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
范围很重要,因为它显示了过滤范围。想象一下这些数据:
运行此Range("A1:G10").AutoFilter
后,您会看到过滤器中只有1到6的值,并且那里没有MORE
。但是,如果您在从过滤器末尾到MORE
(行11,12,13,14)的所有单元格中写入值,则该值将存在,因为Excel会认为这些值已经增加。>
按列,您也不能过滤超出范围的字段。 Range("$A$2:$B$1583").AutoFilter Field:=3
不起作用,因为您希望按2列范围内的第3列进行过滤。