【发布时间】:2022-09-29 13:13:53
【问题描述】:
我正在尝试使用 VBA 中的 SUMIF 公式填充汇总表中的多个单元格。
我有两张纸——摘要和 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\"。
-
cptrng 和 sumrng 是范围,当您在
\"=SumIf(\" & cptrng & \", \" & cpt & \", \" & sumrng & \")\"中使用它们时,它们现在与字符串等效,您希望该公式是什么,是=SumIf( a1:A1000, C4, C1:c1000,如果是的话,您使用 VBA 的目的是什么?除了将其粘贴到单元格C7之外,您还想达到什么目的?如果那不是您想要的公式,您能否详细说明您想要什么? -
看起来您的原始问题已得到解答,并且您现在有一个单独的问题,那么您应该发布一个与该问题相关的新问题。在您这样做之前,进行一些研究,如果您遇到困难,请展示您尝试过的事情以及单元格值、结果和预期结果的示例。尝试通过公式将日期与日期时间值分开,然后将其添加到您的 vba 生成的公式中。不确定这将如何在范围内工作,但我认为单个单元格将是 =int(a1) 或您想要引用的任何单元格。
-
而不是使用
cptrng构建字符串,您可以使用cptrng.address(相应更新答案)