- 系统环境:Windows 10
- Excel:2010版本
今天讲讲常用的单元格定位函数
Part 1:背景介绍
日常工作中,工作表存放数据的最大行列可能不固定,或者无法知道需要操作的单元格的绝对位置,但是知道其相对位置,当然可以使用循环去寻找,但效率偏低。循环与以下三个函数结合效果更好
- Offset:平移
- resize:单元格范围选取
- end:定位最后一个
Part 2:Offset
- offset(行相对位置, 列相对位置)
- 同行为0,向下为正,向上为负
- 同列为0,向左为负,向右为正
Sub test()
Rem>>定义工作表
Set sht = ThisWorkbook.Worksheets("举例")
sht.Cells(1, 1) = "起点位置"
sht.Cells(1, 1).Offset(1, 2) = "相对位置"
End Sub
图1 Offset示例
注意:Rem表示注释。示例中A1为起始位置,行向下1格,列向右2格,则结果在C2
Part 3:Resize
- resize(行数, 列数)
- 构成一个数组或者一个单元格区域
- 适用于特定区域整体复制
- 被复制区域与复制区域大小应一致
- 被复制区域resize后需增加.Value
Sub test()
Rem>>定义工作表
Set sht = ThisWorkbook.Worksheets("举例")
sht.Range("B7").Resize(1, 3) = sht.Range("B5").Resize(1, 3).Value
End Sub
图2 Resize示例
Part 4:End
- end(特定参数)
- 特定参数为:xlUp,xlToLeft,xlDown,xlToRight
- xlUp:从下往上,第一个有数据的单元格
- xlToLeft:从右往左,第一个有数据的单元格
- 上下无To,左右有To
Sub test()
Rem>>定义工作表
Set sht = ThisWorkbook.Worksheets("举例")
MaxHang = sht.Cells(Rows.Count, "A").End(xlUp).Row
MaxLie = sht.Cells(5, Columns.Count).End(xlToLeft).Column
Debug.Print ("MaxHang=" & MaxHang)
Debug.Print ("MaxLie=" & MaxLie)
End Sub
图3 end
通过End方法可以快速定位当前某列写有信息的最大行,对缩小循环次数有很大帮助,提升代码执行效率
以上,为本次的介绍内容,下回见。
本文首发于微信公众号:Excel高效办公之VBA。排版和细节略作修改,发于头条