Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要在VBA Excel中评估的产品_Vba_Excel_Excel Formula_Formulas - Fatal编程技术网

要在VBA Excel中评估的产品

要在VBA Excel中评估的产品,vba,excel,excel-formula,formulas,Vba,Excel,Excel Formula,Formulas,我是个新手。我需要在VBA Excel中计算和积 这是我的工作表: 单元格D4包含特定日期(突出显示为黄色) 单元格D6包含新输入的日期(突出显示为红色) C列包含图例。(高亮显示为粉红色) 第J列包含月份。(高亮显示为绿色) 列K包含该特定事务的图例。(突出显示为橙色) 列I包含要求和的值(以蓝色突出显示) D9列及以后将显示和积的结果(突出显示为灰色) 我想做的是: 我将在单元格#D6中输入一个日期,该日期将在第J列的月份与单元格D6匹配的帮助下对第I列求和,如果匹配,则将第K列的图例

我是个新手。我需要在VBA Excel中计算和积

这是我的工作表:

  • 单元格D4包含特定日期(突出显示为黄色)
  • 单元格D6包含新输入的日期(突出显示为红色)
  • C列包含图例。(高亮显示为粉红色)
  • 第J列包含月份。(高亮显示为绿色)
  • 列K包含该特定事务的图例。(突出显示为橙色)
  • 列I包含要求和的值(以蓝色突出显示)
  • D9列及以后将显示和积的结果(突出显示为灰色)
我想做的是:

我将在单元格#D6中输入一个日期,该日期将在第J列的月份与单元格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(突出显示的黄色)

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


上述范围是否正确?

我已为您使用的工作表添加了正确的参考。在VBA中,首先需要指定“Sheet20”是工作表

因此,我将“Sheet20”替换为
工作表(“工作表20”)
,从而明确它是工作表集合的一部分

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
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