Sumproduct在VBA Excel中进行评估

我是新来的Excel。 我需要在VBA Excel中评估Sum-product。

这是我的工作表:

在这里输入图像说明

  • 单元格D4包含特定date(突出显示的黄色)
  • 单元格D6包含新input的date(突出显示的红色)
  • C列包含图例(突出粉红色)
  • J列包含月份。 (突出绿色)
  • K列包含特定交易的图例。 (被突出的桔子)
  • 列I包含要加总的值(突出显示的蓝色)
  • D9列以后将显示总产品的结果(突出显示的灰色)

我想要做的是:

我会在单元格#D6中input一个date,这个date应该在列J与单元格D6匹配的月份的帮助下求和第一列,如果匹配,那么它将在列C中匹配列K的图例和图例的图例,并且如果匹配再次它将总结列I和列D9中显示它的值。

这是我使用的公式,它没有VBA的工作。

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

使用VBA的目的是使用While循环。 当我在D6中input一个特定月份的date时,它应该增加或减less月份并将它们添加到另一个指定的date单元格D4(突出显示的黄色)。

但是,当我使用上述公式它返回#值。

 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")replace了“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