● 本技巧的目的:定位到指定行或者列中的最后一个非空单元格。
● 这个技巧非常重要,在 Excel 操作中是否经常会遇到这样的情景,需要把单元格快速移动到本行或者本列的最后一个有数据的单元格呢?在VBA 中这个代码也是非常重要的,他能够让我们实现表格数据的动态获取,而不需要输入一个固定的地址。
● 首先看一下在 Excel 中是如何操作的:
● 现在的单元格地址在 A2
● 在 Excel 中快速移动到 A15 的方法:Ctrl + ↓ (数字键盘的下方向键)。
● 同理,用Ctrl + ↑ ↓ ← → (数字键盘各方向键) 可以实现各个方向的快速移动到最后单元格的目的。
专栏郑广学Excel VBA 175例案例精讲作者:郑广学网络服务工作室100币203人已购查看
●★★★ 注意:在Excel 中用 Ctrl + 方向键 是移动到连续的最后有数据的单元格。与VBA 不同!!!
● 如下图,最后单元格是 H1 和 A15
● 1. 代码助手神键手实现快速输入
只要输入中文 最大行+ 空格,就会自动弹出选项,再也不用记长长的代码了多方便。
● 2. 单元格最大行数,最大列数
最大行:Sheet1.Rows.Count
注释:
1) Sheet1 工作表 所有行的数量
2) 还有个更简单的方法:当然用Rows.count 也是可以的
① Excel2010 以上版本最大行是 1048576 行, 但是还是可以使用 65536,60000 行这个数值。
② Excel2003 中最大行是 65536 行,所以我们可以写成 [A65536] 甚至是 [A60000]
最大列:ActiveSheet.Columns.Count
注释:活动单元格的最大列
● 3. 参数
● 4. VBA 与 EXCEL 操作的原理不同:
★★★ 注意:VBA 是:先移动到最后的位置,然后再返回,所以是返回到真正的最后一行!!!
● 5. 快速定位到:一列中的最后一行单元格
书写方法:Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)
注释:
1) 格式:A列最大行.End(xlup),注:可以是A列,可以是B列,C列,任意列
2)定位到最大行后,再向上移动到最后一行数据所在的单元格
3)调试语句: Debug.print rng.address 在立即窗口打印出 rng 的地址:$A$18
● 6. 快速定位到:一行中的最后一列单元格
书写方法:Sheet1.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft)
注释:
1) 格式:第一行最大列.End(xlToLeft),注:可以是第1行,第2行,任意行
2) 定位到最大列后,再向左移动到最后一列数据所在的单元格
3) 调试语句:
Debug.Printrng.Address 打印地址
Debug.Printrng.Column 打印数字列号
Debug.Print "最后非空单元格地址为:" & rng.Address & "列号:"& rng.Column _
& "行号:" & rng.Row & "数值:"& rng.Value
在立即窗口打印出:
$K$1
11
最后非空单元格地址为:$K$1列号:11行号:1数值:123
● 7. Address, 后面加参数,代表:是否绝对引用
1)Sheet1.Range("A3").Address(0,1) 代表: $A3 列绝对引用, 行相对引用
2)Sheet1.Range("A3").Address(1,0) 代表: A$3 列相对引用, 行绝对引用
3)Sheet1.Range("A3").Address(1,1) 和 Sheet1.Range("A3").Address
都是代表: $A$3 行列均绝对引用
4)Sheet1.Range("A3").Address(0,0) 代表: A3 行列都是相对引用
本人首发于微信公众号EXCEL880
●VBA代码助手 懒人神器 请在在EXCEL880官网下载