【问题标题】:Error while calculating last row of adjucent column计算相邻列的最后一行时出错
【发布时间】:2019-03-07 07:43:59
【问题描述】:

我在 VBA 中使用下面的代码在单元格 Y3:AB3 中填写公式,直到 X 列的最后一行,但 excel 将填写公式直到最后一行加上另外 3000 行。我已经用不同的文件和数据集测试了这个公式,但我得到了同样的错误。请您给点建议。

谢谢, 回复

Sheets("CJI Data").Select
Dim LastRow As Long
Dim Sht As Worksheet
Set Sht = ActiveWorkbook.Sheets("CJI Data")
LastRow = Sht.Range("X3").CurrentRegion.Rows.Count
Range("Y3:AB3" & LastRow).FillDown
Range("A2:AB2").Select

【问题讨论】:

  • Range("Y3:AB" & LastRow).FillDown
  • CurrentRegion 将包括任何相邻的数据,而不仅仅是 X 列。如果您只对 X 列感兴趣,请使用 LastRow=Sht.Cells(Rows.Count, 24).End(xlup).Row
  • 谢谢达雷尔 H!

标签: excel vba


【解决方案1】:

你不应该有AB3,只有ABRange 引用应包括第一行和最后一行编号。您在最后一个行号前添加了一个额外的 3,这会导致额外的 3000 行。

Range("Y3:AB" & LastRow).FillDown

此外,正如@JohnColeman 所指出的,使用CurrentRegion.Rows 并不是获取最后一行的万无一失的方法。如果您的数据不是从第 1 行开始,它可能会产生意想不到的结果。

您可以改为使用End(xlUp)@Darrell H 也建议):

With Sht
    LastRow = .Cells(.Rows.Count, "X").End(xlup).Row
End With

【讨论】:

  • 这两个建议都很有效!!谢谢 BigBen 和 Darrell!
【解决方案2】:

你可以试试:

Sub Test()
    Sheets("CJI Data").Select
    Dim LastRow As Long
    Dim Sht As Worksheet
    Set Sht = ActiveWorkbook.Sheets("CJI Data")
    LastRow = Sht.Range("X1048576").End(xlUp).Row
    Range("Y3:AB3" & LastRow).FillDown
    Range("A2:AB2").Select
End Sub

我希望这会有所帮助!

【讨论】:

  • 感谢 Raul,我使用了 Darrell H 和 Big Ben 的建议,解决了我的问题。
猜你喜欢
  • 2016-01-08
  • 2011-10-07
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多