excel - 使用 SumIf 填充摘要表中的多个单元格

标签 excel vba

我正在尝试使用 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/

相关文章:

vba - 希望在 Excel 中选择不确定数量的行作为较大 VBA 宏的一部分

excel - 我的 VBA 代码未将 csv 文件上传到 Azure 中的 ADLS

vba - 如何在一个单元格中获取由两个空格分隔的单元格范围

java - 添加新行后 Excel 文件没有更改

excel - VBA 代码不一致地导致 Excel 崩溃(运行时错误 80010108)

excel - powershell excel访问无需安装Excel

如果至少一个单元格不低于 2 个字符,VBA 代码将不起作用

vba - 检查外部封闭工作簿中是否存在工作表

excel - 以管理员身份在宏中运行 Powershell 命令(已提升)

vba - 为什么 Columns ("F:F").Select 选择整个工作表?