【问题标题】:fill down formula using vba to set starting cell dynamic使用vba填写公式以设置起始单元格动态
【发布时间】:2017-02-09 23:47:24
【问题描述】:
lastRow44 = Cells(Rows.Count, "A").End(xlUp).Row
LastRow3 = Worksheets("Temp").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row

Range("A" & LastRow3).End(xlDown).Offset(0, 11).Formula = "=Sum(M50:M" & lastRow44 & ")"

我正在尝试将 vba 代码修改为更具动态性。我想将总和计算设置得更加动态。所以我正在尝试类似Range("A" & LastRow3).End(xlDown).Offset(0, 11).Formula = "=Sum(("M" & LastRow3).End(xlDown).Offset(0, 11) & lastRow44 & ")" 自动定义起始单元为 M50。但是,它不像我想要的那样工作。有什么办法可以修改代码来动态计算起始单元格的总和?

谢谢!

【问题讨论】:

  • 您用于定义 .formula 的方程式需要更好的报价管理。 ="=sum(M"&lastrow3&":X"&lastrow44&")"。这将是第一步。
  • X 假设您想要的 +11 偏移量从 M(第 13 个字母)到 X(第 24 个字母)。

标签: vba excel sum offset


【解决方案1】:

尝试改变

lastRow44 = Cells(Rows.Count, "A").End(xlUp).Row
LastRow3 = Worksheets("Temp").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row

到

lastRow44 = Sheets("Temp").Cells(Rows.Count, 1).End(xlUp).Row
LastRow3 = Worksheets("Temp").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

另外,我不确定你想用什么来完成

Range("A" & LastRow3).End(xlDown).Offset(0, 11).Formula = _
"=Sum(("M" & LastRow3).End(xlDown).Offset(0, 11) & lastRow44 & ")"

您的公式所做的是首先设置为您定义的最后一行,然后向下搜索(就像您按 CTRL + 向下箭头一样)。如果这不是您想要的,请尝试删除两者的 ".END(xlDown" 部分。

最后,如果您知道您使用的是 11 的偏移量,为什么不将其设置为使用“M”而不是 A,而根本不使用偏移量?

【讨论】:

    【解决方案2】:

    这样的事情怎么样:

    lastRow44 = Cells(Rows.Count, "A").End(xlUp).Row
    For x = 50 To LastRow3
    Range("A" & x).Formula = "=Sum(""M""" & x & "": M "" & lastRow44 & ")"
    Next x
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多