繁体   English   中英

Excel VBA-动态公式返回范围的零值

[英]Excel VBA- Dynamic formula returning zero value for range

我试图让vba在同一数据集中为两个范围创建一个公式,作为变量lastRow和lastRow2的输入。 但是,当我尝试创建和计算公式时,没有得到最后一个单元格的值,而是得到了零。 令人反感的代码如下:

Dim lastRow As Long
Dim lastRow2 As Long
    lastRow = Range("A" & Rows.Count).End(xlUp).Row
    lastRow2 = Range("M" & Rows.Count).End(xlUp).Row


...



    'Calculate ATRT 2014 at cell B4
    Range("B6").Formula = "=(SUM(J11:J" & lastRow & ")/ SUM(I11:I" & lastRow & "))"
    Range("E6").Formula = "=(SUM(U11:U" & lastRow2 & ")/ SUM(T11:T" & lastRow2 & "))"
    Range("H6").Formula = "=E6-B6"

运行此命令可获得两个公式:=(SUM(J11:J0)/ sum(I11:I0))和=(SUM(U11:U0)/ SUM(T11:T0))。 为什么范围的结尾为零???

我很确定,如果您没有定义range()和row()对象位于哪个工作表上,那么VBA会猜测并且可能会猜测不正确。 尝试添加工作表对象,然后定义要在该工作表上使用的所有范围和行。

Dim lastRow As Long
Dim lastRow2 As Long
Dim ws As Worksheet

Set ws = ActiveSheet
lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
lastRow2 = ws.Range("M" & ws.Rows.Count).End(xlUp).Row


'...



'Calculate ATRT 2014 at cell B4
ws.Range("B6").Formula = "=(SUM(J11:J" & lastRow & ")/ SUM(I11:I" & lastRow & "))"
ws.Range("E6").Formula = "=(SUM(U11:U" & lastRow2 & ")/ SUM(T11:T" & lastRow2 & "))"
ws.Range("H6").Formula = "=E6-B6"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM