|
本帖最后由 hfwufanhf2006 于 2020-5-22 08:45 编辑
一般来说,起始行和列数是固定的,只有最末行是变化的,因此把最前面的区域引用改用变量替换:
Range("a2:h30")改成:
Range("a2:h" & [a65000].end(3).row) '从a2行到最末行
如果你的行列变量是已知的,那就简单了,假设行变量是m,列变量是 n
rang("a2:" & n & m)
如果行、列变量都不知道,可以用楼上爱疯版主的方法,用CurrentRegion来识别数据区,这个方法最简单;
如果自己代码功底也比较深,也可以用自定义代码识别,比如:
[a2].end(2).column:从a2向右连续数据的末尾列,这里指连续数据,遇到第一个空单元格就停止;
[aa2].end(1).column:从[aa2]向左遇到的第一个数据单元格列号
[a2].end(2).address : 从a2向右连续数据的末尾列的绝对地址
上面这些只能得到类似“$H$2”这样的地址,然后再进行截取变换也能变成数据区域,比如:
range("a2:" & Mid(Cells(2, [a2].End(2).Column).Address, 2, 1) & [a65000].End(3).Row)
其中:
Mid(Cells(2, [a2].End(2).Column).Address, 2, 1)是截取"$h$2"中的字母"h"
[a65000].End(3).Row 是获得最末行,如果实际的最末行是30,上面的结果就是 range("a2:h30")
|
评分
-
查看全部评分
|