包括拉斯特罗的SUMIF公式

我正在尝试在我的VBA中input一个SUMIF公式,但单元格的范围可能会根据另一个选项卡上的“Lastrow”而改变。 我能够得到拉斯特罗没有问题,但问题是试图进入我的SUMIF公式。 “拉斯特罗”值应取代单元格Q156和H156。 希望这是有道理的。 欢迎任何build议。

见下文:

Sub UpdateReconData() Dim Lastrow6 As Integer 'gets last Row on Formatting Spreadsheet Sheets("Formatting").Select Lastrow6 = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row Sheets("Recon").Select Range("B2").Select ActiveCell.Value = _ "=SUMIF(Formatting!$Q$2:$Q$156(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$156)" End Sub 

您可以将Lastrow6variables连接到公式string中。 您可以通过使用&符号来连接string和variables。

 Range("B2").Value = _ "=SUMIF(Formatting!$Q$2:$Q$" & Lastrow6 & _ "(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$" & Lastrow6 & ")" 

在你的公式中试试这个:

 "=SUMIF(Formatting!$Q$2:$Q$" & Lastrow6 & "(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$" & Lastrow6 & ")" 

由于lastRow6在几个地方, Range.Replace方法比string连接更容易。

 Sub UpdateReconData() Dim lastRow6 As Long 'gets last Row on Formatting Spreadsheet With Worksheets("Formatting") lastRow6 = .Cells(Rows.Count, "B").End(xlUp).Row End With With Worksheets("Recon") .Range("B2").Formula = _ Replace("=SUMIF(Formatting!$Q$2:$Q$XYZ, $A2&B$1, Formatting!$H$2:$H$XYZ)", _ "XYZ", lastRow6) End With End Sub 

我不完全确定你为什么不在SUMIF函数中使用完整的列引用,但是我确定有其他数据行会混淆结果。 完整的列引用不会像SUMPRODUCT函数那样减慢SUMIF / SUMIFS的速度。 理想情况下, lastRow6可以像下面这样构build到SUMIF公式中。

  With Worksheets("Recon") 'never have to do this again. .Range("B2").Formula = _ "=SUMIF(Formatting!$Q$2:INDEX(Formatting!$Q:$Q, MATCH(1e99, Formatting!$H:$H)), " & _ "$A2&B$1, " & _ "Formatting!$H$2:INDEX(Formatting!$H:$H, MATCH(1e99, Formatting!$H:$H)))" End With 

MATCH(1e99, Formatting!$H:$H)查找格式化!H:H中包含数字的最后一行。 既然你正在总结这一列,那么下面没有行。