簡體   English   中英

VBA SUMIF 公式未填充任何內容

[英]VBA SUMIF formula isn't populating anything

我正在嘗試使用 VBA 中的 SUMIF 公式在匯總表中填充多個單元格,但我不知道為什么它不起作用。

我有 2 張工作表 - 摘要和 CPTView 我希望單元格 C7 填充 sumif 公式的結果。 我希望它在 CPTView A:A 中查找與摘要單元格 C4 匹配的日期,並對 CPTView C:C 求和。

這是我的代碼。 我想嘗試避免使用 Application.WorksheetFunction 因為我希望在數據更改時重新計算此單元格。

請幫助:(我必須用類似的公式填充大量單元格

 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 & ")"

該公式顯示了所有正確的單元格和范圍,但我現在收到類型不匹配錯誤。 我對 VBA 還是很陌生,所以我不知道如何解決這個問題。 我認為這是因為日期格式不匹配。標准日期顯示為“mm/dd/yyyy”,但范圍顯示日期為“mm/dd/yyyy h:mm”

您需要結合文本和變量構建公式 string。

相反,您實際上是在插入這個公式:

 =SumIf(cptrng, cpt, sumrng)

要獲得您想要的效果,您有兩種選擇:

選項1

在這一行中即時構建它:

 ws.Range("C7").Formula = "=SumIf(cptrng, cpt, sumrng)"

通過將其替換為:

 ws.Range("C7").Formula = "=SumIf(" & cptrng.address & ", " & cpt & ", " & sumrng.address & ")"

選項 2

首先構建一個公式變量,然后將公式設置為該變量。

用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM