excel - VBA过滤器函数中的范围指的是什么
问题描述
想检查下 ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=7, Criteria1:="=", range $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
解决方案
这ActiveSheet.Range("$A$1:$O$1583")
是要过滤的范围。A1
是左上角的单元格,而是O1583
右下角的。此单元格位于第 1583 列O
的第 1583 行。
这些$
标志可以被删除,在 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 列进行过滤。
推荐阅读
- json - Python3,从 API 访问 json 数组值 - IndexError:列表索引超出范围
- python - 基于上一行和下一行填充行
- python-3.x - 使用 python 加密证书生成器向证书添加任意/不推荐使用的扩展
- mysql - 使用 MAX(Date) 连接 MYSQL 表
- ios - AudioKit 5 和 Xcode 12 beta 6 构建错误
- swift - 绘制另一条时 UIBezierPath 线消失
- mysql - 在mysql中左加入后如何获取每个寄存器的最高日期?
- excel - 将那么多行读入记录集中,因为 Excel 文件的 B 列中有使用的单元格,使用 ADODB 与 EXCEL 连接;
- matlab - 大型线性规划的 Mosek 内存问题
- json - 如何解码我收到的作为对 HTTP POST 请求的响应的数据