一列的反转/偏移顺序到另一列,可变的最后一行

时间:2014-09-11 13:52:15

标签: vba excel-vba formula reverse offset

O1 = OFFSET( $ B $ last , - (行(B1)-1,0)

我对上面公式的问题是B列的最后一行可以是任何数字(变量称为increment),我知道你不能使用宏中指定的变量作为单元格公式的一部分。我怎么能绕过这个“最后”可以是任何数字的地方。

另外,如果我想将列中的值复制到列O中,则上述公式是否正确?

2 个答案:

答案 0 :(得分:0)

你的问题不是很清楚,但我认为你可能正在寻找一个像这样的公式:

=OFFSET($B$1,(COUNTA($B:$B)-ROW($B1)),)

将其粘贴到 O1 并向下拖动。

让我知道它是如何运作的?

答案 1 :(得分:0)

解决问题的第一部分。

现在VBA方式

此公式将在Cell O1中。请注意,如果您使用的是Excel 2003,请将1048576更改为65536.这是一个数组公式。这意味着你必须按 CTRL + SHIFT + ENTER 代替简单的 ENTER

=OFFSET(INDIRECT("$B$" & MAX(ROW(1:1048576)*(B:B<>""))), -(ROW(B1)-1), 0)

VBA Way

LastRow = ws.Range("B" & ws.Rows.Count).End(xlup).Row
Range("O1").Formula = "=OFFSET($B$" & LastRow & ", -(ROW(B1)-1), 0)"

问题的第二部分

  

另外,如果我想将列中的值复制到列O中,则上述公式是否正确?

我必须在评论前测试它。将很快更新。