Vba 使用变量last row将一列反转/偏移到另一列

Vba 使用变量last row将一列反转/偏移到另一列,vba,excel,formula,reverse,offset,Vba,Excel,Formula,Reverse,Offset,O1=偏移量($B$last,-(第(B1)行)-1,0) 以上公式的问题是,B列的最后一行可以是任何数字(称为增量的变量),我知道不能将宏中命名的变量用作单元格公式的一部分。如果“last”可以是任何数字,我将如何处理这个问题 另外,如果我想将列中的值按相反顺序复制到列O中,上述公式是否正确?您的问题不太清楚,但我认为您可能正在寻找类似以下的公式: =抵销($B$1,(COUNTA($B:$B)-行($B1)),) 将其粘贴到O1并向下拖动 让我知道它是如何工作的?解决问题的第一部分 现在使用

O1=偏移量($B$last,-(第(B1)行)-1,0)

以上公式的问题是,B列的最后一行可以是任何数字(称为增量的变量),我知道不能将宏中命名的变量用作单元格公式的一部分。如果“last”可以是任何数字,我将如何处理这个问题


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

您的问题不太清楚,但我认为您可能正在寻找类似以下的公式:

=抵销($B$1,(COUNTA($B:$B)-行($B1)),)

将其粘贴到O1并向下拖动


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

解决问题的第一部分

现在使用VBA方式

LastRow = ws.Range("B" & ws.Rows.Count).End(xlup).Row
Range("O1").Formula = "=OFFSET($B$" & LastRow & ", -(ROW(B1)-1), 0)"
此公式将位于单元格O1中。请注意,如果您使用的是Excel 2003,请将1048576更改为65536。这是一个数组公式。这意味着您必须按CTRL+SHIFT+ENTER键来代替简单的ENTER键

问题的第二部分

另外,如果我想将列中的值按相反顺序复制到列O中,上述公式正确吗


在评论之前,我必须对其进行测试。将很快更新。

这将用OI列中的零替换B列中的嵌入空白。如果B列中的值完整,这将在O列中反转它们。这是我从问题中得到的最多信息。请参阅:最后一段。我猜您错误地忽略了我的评论:)
LastRow = ws.Range("B" & ws.Rows.Count).End(xlup).Row
Range("O1").Formula = "=OFFSET($B$" & LastRow & ", -(ROW(B1)-1), 0)"