我试图在我的VBA中输入SUMIF公式但是细胞的范围可能会根据&#;; Lastrow'而变化。在另一个标签上。我能够让Lastrow没问题,但问题是试图进入我的SUMIF公式。 ' LASTROW'值应取代细胞Q156& H156。希望这是有道理的。欢迎任何建议。
见下文:
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
答案 0 :(得分:0)
您可以将Lastrow6
变量连接到公式字符串中。您可以使用&符号(&)符号将字符串与变量连接起来。
Range("B2").Value = _
"=SUMIF(Formatting!$Q$2:$Q$" & Lastrow6 & _
"(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$" & Lastrow6 & ")"
答案 1 :(得分:0)
在你的公式中试试这个:
"=SUMIF(Formatting!$Q$2:$Q$" & Lastrow6 & "(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$" & Lastrow6 & ")"
答案 2 :(得分:0)
由于 lastRow6 位于几个地方,因此Range.Replace method比字符串连接更容易。
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 function中的完整列引用,但我确定还有其他行包含可能会混淆结果的数据。完整列引用不会像对SUMPRODUCT function那样减慢SUMIF / SUMIFS的速度。理想情况下, lastRow6 可以构建到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包含一个数字。由于您要对此列求和,因此下面没有任何行。