我正在尝试使用 VBA 中的 SUMIF 公式填充摘要表中的多个单元格。
我有两张表 - Summary 和 CPTView。
我希望单元格 C7 填充 SumIf 公式的结果。我希望它在 CPTView A:A 中查找与摘要单元格 C4 和 CPTView C:C 总和相匹配的日期。
我想避免使用 Application.WorksheetFunction,因为我希望在数据更改时重新计算此单元格。
Private Sub summarypage()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Summary")
Dim cptrng As Range
Dim sumrng As Range
Dim cpt As String
Set cptrng = Sheets("CPTView").Range("A1:A1000")
Set sumrng = Sheets("CPTView").Range("C1:C1000")
cpt = ws.Range("C4").Value
ws.Range("C7").Formula = "=SumIf(cptrng, cpt, sumrng)"
End Sub
我将上面的内容更改为
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Summary")
Dim cptrng As Range
Dim sumrng As Range
Dim cpt As String
Set cptrng = Sheets("CPTView").Range("A1:A1000")
Set sumrng = Sheets("CPTView").Range("C1:C1000")
cpt = ws.Range("C4").Value
ws.Range("C7").Formula = "=SumIf(" & cptrng & ", " & cpt & ", " & sumrng & ")"
该公式显示了所有正确的单元格和范围,但我现在收到类型不匹配错误。
我认为这是因为日期格式不匹配。标准日期显示为“mm/dd/yyyy”,但范围显示日期为“mm/dd/yyyy h:mm”。
最佳答案
使用 VBA 编写 SUMIF 公式
Sub SumIfFormula()
' Source
Const sName As String = "CPTView"
Const slAddr As String = "A1:A1000" ' Lookup
Const ssAddr As String = "C1:C1000" ' Sum
' Destination
Const dName As String = "Summary"
Const dlAddr As String = "C4" ' Lookup
Const dsAddr As String = "C7" ' Sum
Dim Formula As String: Formula = "=SUMIF('" & sName & "'!" & slAddr & "," _
& dlAddr & "," & "'" & sName & "'!" & ssAddr & ")"
'Debug.Print Formula
ThisWorkbook.Worksheets(dName).Range(dsAddr).Formula = Formula
End Sub
关于excel - 使用 SumIf 填充摘要表中的多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72842971/