簡體   English   中英

將在VBA Excel中評估的求和產品

[英]Sumproduct to be evaluated in VBA Excel

我是Excel新手。 我需要在VBA Excel中評估總和產品。

這是我的工作表:

在此處輸入圖片說明

  • 單元格D4包含特定日期(突出顯示的黃色)
  • 單元格D6包含新輸入的日期(紅色突出顯示)
  • C列包含圖例。(突出顯示的粉紅色)
  • J列包含月份。 (綠色突出顯示)
  • K列包含該特定交易的圖例。 (橙色突出顯示)
  • 第一列包含要求和的值(藍色突出顯示)
  • D9列及以后將顯示總和的結果(突出顯示的灰色)

我想做的是:

我將在D6單元格中輸入一個日期,該日期將在D列與D6單元格匹配的月份的幫助下對I列求和,如果匹配,則它將K列的圖例與C列的圖例相匹配,如果匹配再次,它將對I列求和,並在D9列開始顯示它的值。

這是我使用的公式,沒有VBA也可以使用。

SUMPRODUCT((MONTH($J$9:$J$12000)=MONTH($D$6))*($K$9:$K$12000=C10)*($I$9:$I$12000))

使用VBA的目的是使用While循環。 當我在D6中輸入特定月份的日期時,它應該增加或減少月份,並將它們添加到另一個指定的日期單元格D4(突出顯示的黃色)中。

但是,當我使用上述公式時,它將返回#Value。

Sub Sub1()
Dim a, b, c As Integer
a = Sheet20.Cells(6, 4)
b = 4
c = 10
Do While a >= Cells(4, 4)
Sheet20.Cells(c, b).Value = Evaluate(" (SumProduct((Month(Sheet20.Range(J9:J12000)) = Month(Cells(6, 4))) * (Sheet20.Range(K9:K12000) = Cells(c, 3)) * (Sheet20.Range(I9:I12000)))")
 a = a - 1
Loop
End Sub

以上是否正確選擇了范圍?

我已經為您使用的工作表添加了正確的參考。 在VBA中,您需要首先指定“ Sheet20”是一個工作表。

因此,我用Worksheets("Worksheet20")替換了“ Sheet20”,從而清楚地表明它是工作表集合的一部分。

Sub Sub1()
Dim a, b, c As Integer
a = Worksheets("Sheet20").Cells(6, 4)
b = 4
c = 10
Do While a >= Cells(4, 4)
Worksheets("Sheet20").Cells(c, b).Value = Evaluate(" (SumProduct((Month(Sheet20.Range(J9:J12000)) = Month(Cells(6, 4))) * (Sheet20.Range(K9:K12000) = Cells(c, 3)) * (Sheet20.Range(I9:I12000)))")
 a = a - 1
Loop
End Sub

暫無
暫無

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

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