image.png

本技巧的目的:定位到指定行或者列中的最后一个非空单元格

这个技巧非常重要,在 Excel 操作中是否经常会遇到这样的情景,需要把单元格快速移动到本行或者本列的最后一个有数据的单元格呢?在VBA 中这个代码也是非常重要的,他能够让我们实现表格数据的动态获取,而不需要输入一个固定的地址。

  • 首先看一下在 Excel 中是如何操作的:
  • 现在的单元格地址在 A2
  • 技巧003 VBA获得最大行最大列 - 图3
  • 在 Excel 中快速移动到 A15 的方法:Ctrl + ↓ (数字键盘的下方向键)。
  • 技巧003 VBA获得最大行最大列 - 图4
  • 同理,用Ctrl + ↑ ↓ ← → (数字键盘各方向键) 可以实现各个方向的快速移动到最后单元格的目的。
  • ★★★ 注意:在Excel 中用 Ctrl + 方向键 是移动到连续的最后有数据的单元格。与 VBA 不同!!!
  • 如下图,最后单元格是 H1 和 A15
  • 技巧003 VBA获得最大行最大列 - 图5

    1. 代码助手神键手实现快速输入

    1. 代码助手下载地址 [http://excel880.com/blog/archives/11297](http://excel880.com/blog/archives/11297)
  • 只要输入中文 最大行 + 空格,就会自动弹出选项,再也不用记长长的代码了多方便。

  • 技巧003 VBA获得最大行最大列 - 图6

    2. 单元格最大行,最大列

  • 最大行:Sheet1.Rows.Count

  • 注释:
  • 1) Sheet1 工作表 所有行的数量
  • 2) 还有个更简单的方法:当然用 Rows.count 也是可以的
  • ① Excel2010 以上版本最大行是 1048576 行, 但是还是可以使用 65536,60000 行这个数值。
  • ② Excel2003 中最大行是 65536 行,所以我们可以写成 [A65536] 甚至是 [A60000]
  • 最大列:ActiveSheet.Columns.Count
  • 注释:活动单元格的最大列

    3. 参数

    技巧003 VBA获得最大行最大列 - 图7

    4. VBA 与 EXCEL 操作的原理不同

  • ★★★ 注意:VBA 是:先移动到最后,然后再返回,所以是返回到真正的最后一行!!!

    5. 快速定位到:一列中的最后一行单元格


  • 技巧003 VBA获得最大行最大列 - 图8

  • 技巧003 VBA获得最大行最大列 - 图9
  • 书写方法:Sheet1.Range(“A” & Sheet1.Rows.Count).End(xlUp)
  • 注释:
  • 1) 格式:A列最大行.End(xlup),注:可以是A列,可以是B列,C列,任意列
  • 2)定位到最大行后,再向上移动到最后一行数据所在的单元格
  • 3)调试语句: Debug.print rng.address ‘在立即窗口打印出 rng 的地址: $A$18
  • 技巧003 VBA获得最大行最大列 - 图10

    6. 快速定位到:一行中的最后一列单元格


  • 技巧003 VBA获得最大行最大列 - 图11

  • 技巧003 VBA获得最大行最大列 - 图12
  • 书写方法:Sheet1.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft)
  • 注释:
  • 1) 格式:第一行最大列.End(xlToLeft),注:可以是第1行,第2行,任意行
  • 2) 定位到最大列后,再向左移动到最后一列数据所在的单元格
  • 3) 调试语句:
  • Debug.Print rng.Address ‘打印地址
  • Debug.Print rng.Column ‘打印数字列号
  • Debug.Print “最后非空单元格地址为:” & rng.Address & “列号:” & rng.Column _
  • & “行号:” & rng.Row & “数值:” & rng.Value
  • 在立即窗口打印出:
  • $K$1
  • 11
  • 最后非空单元格地址为:$K$1列号:11行号:1数值:123
  • 技巧003 VBA获得最大行最大列 - 图13

    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 行列都是相对引用

    更多作品请百度搜索 郑广学

    VBA代码助手 懒人神器 在 EXCEL880.COM 官网下载