尝试使用 SUMIFS 汇总数据库 - VBA
Trying to summarize a database using SUMIFS - VBA
'数据库中的行数每个月都在变化,因此变量 lastCode。
'当我手动将最后一行放入 $M510
和 $O510
时,代码运行没有问题,但是当我将变量 & lastCode
放入 SUMIFS
时,我收到错误
Run-time '1004'application-defined or object defined.
请告诉我下面代码中的 SUMIFS
有什么问题。
Sub SumGroups()
Worksheets("Database").Activate
Dim lastCode, lastFiltCode As Integer
Dim Formula As String
'Determine Last Row in Column O (Unfiltered Codes)
lastCode = Range("O" & Rows.Count).End(xlUp).Row
'Filter Unique Codes into Column A Sheet2
Range("O1:O" & lastCode).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Sheet2.Range("A1"), Unique:=True
'Determine last Row in Column A (Filtered Codes)
Worksheets("Sheet2").Activate
lastFiltCode = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
'Place SUMIF Formula in Column B Sheet2
Worksheets("Sheet2").Range("B2:B" & lastFiltCode).Formula = _
"=SUMIFS(Database!$M:$M$ & lastCode,Database!$O:$O$ & lastCode,A2)"
End Sub
您要找的是:
"=SUMIFS(Database!$M:$M$" & lastCode & ",Database!$O:$O$" & lastCode & ",A2)"
原因是当您将某些内容放入 "quotation marks" 时,VBA 会将其读取为纯文本,您可以使用 Debug.Print "=SUMIFS(Database!$M:$M$ & lastCode,Database!$O:$O$ & lastCode,A2)"
并按 Ctrl + G 或在 VBA select "View" > "Immidiate Window" 它会告诉你 Excel
到底发生了什么
'数据库中的行数每个月都在变化,因此变量 lastCode。
'当我手动将最后一行放入 $M510
和 $O510
时,代码运行没有问题,但是当我将变量 & lastCode
放入 SUMIFS
时,我收到错误
Run-time '1004'application-defined or object defined.
请告诉我下面代码中的 SUMIFS
有什么问题。
Sub SumGroups()
Worksheets("Database").Activate
Dim lastCode, lastFiltCode As Integer
Dim Formula As String
'Determine Last Row in Column O (Unfiltered Codes)
lastCode = Range("O" & Rows.Count).End(xlUp).Row
'Filter Unique Codes into Column A Sheet2
Range("O1:O" & lastCode).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Sheet2.Range("A1"), Unique:=True
'Determine last Row in Column A (Filtered Codes)
Worksheets("Sheet2").Activate
lastFiltCode = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
'Place SUMIF Formula in Column B Sheet2
Worksheets("Sheet2").Range("B2:B" & lastFiltCode).Formula = _
"=SUMIFS(Database!$M:$M$ & lastCode,Database!$O:$O$ & lastCode,A2)"
End Sub
您要找的是:
"=SUMIFS(Database!$M:$M$" & lastCode & ",Database!$O:$O$" & lastCode & ",A2)"
原因是当您将某些内容放入 "quotation marks" 时,VBA 会将其读取为纯文本,您可以使用 Debug.Print "=SUMIFS(Database!$M:$M$ & lastCode,Database!$O:$O$ & lastCode,A2)"
并按 Ctrl + G 或在 VBA select "View" > "Immidiate Window" 它会告诉你 Excel