几天前,我花了11个小时绞尽脑汁来完成这个任务。每个人要么用绝对值的样本范围回答,要么用完全相对的.offset函数回答。要么他们提到在vba中选择不好,要么他们提供了某种我无法适应的解决方案,要么.select不适用于R1 C1. a.等等。我的脚本现在完成了,和完全运行,但它很慢,因为每次运行宏时,它使用此循环大约2000-3000次:
Do Until Selection.Row = 1
If Selection.Row <> 1 Then
Selection.Offset(-1, 0).Select
End If
Loop
我只想知道,对于当前选中的单元格,无论它在哪里,在vba中有没有更快的方法来选择该(任意)列(相对引用)的顶行(第1行,绝对引用)?
2条答案
按热度按时间t5fffqht1#
为了更快地完成,您可以这样进行优化:
有一个问题,你不能用单元格(x,y).行代替选择方法吗?这是一个更快的方法。
换句话说,列通常在顶部有一个名称,你可以搜索这个名称,并获得这个位置,然后选择下面的行。
wfsdck302#
不需要迭代查找当前列的顶部:
Range
的.End(xlUp)
成员找到 * 连续 * 数据集的结尾。More info here。或
此方法使用
Range
的Column
成员返回该列的 number,然后使用Cells
函数调用该列的第一行。More info here。或(如上所述)
此方法使用
Range
的Offset
成员。此函数(more info here)有两个可选参数。第一个参数为RowOffset
,因此此公式将A21中的单元格偏移-20行,从而得出A1。