我正在尝试计算多个条件并让代码以某种方式与SUMPRODUCT一起工作。
Range("i2") = [SUMPRODUCT(($CZ$2:$CZ$61410="condition 1")*($DD$2:$DD$61410="condition 2")*($CU$2:$CU$61410=$A$2 <-/date/)*($CY$2:$CY$61410="condition 3"))]
大约有40个不同条件的列。所以我必须为每个条件编码。但这并不适合我,因为我整个月都必须做同样的事情。
解释
单元格A2
到A32
保留日期,比如从8月1日到8月31日。
原始数据表(在同一张纸上)的日期位于CU
列(可能是60000+行)。
列CZ
,DD
,CY
等具有必须满足的条件才能计算。
问题
我想要做的是,如果CU
列中的日期= A2
中的日期,那么它将计入第2行,如果CU
列中的日期=日期在A3
中,它将计入第3行。
这样我可以整个月编写一个代码,而不是每天分别编写代码。
答案 0 :(得分:2)
我首先提供这种类型的公式(如果愿意,可以使用WorksheetFunction)的解决方案:
=COUNTIFS(CZ:CZ,"=1",DD:DD,"=2",CY:CY,"=3", ... CU:CU,"="&A2)
和显示结果的图像(黄色单元格)取决于所选日期:
为了便于说明,它计算在A2中选择的日期上与Row1中显示的硬编码标准匹配的实例数。
没有标准的硬编码,但可能与OP稍微更好的“匹配”并有更多示例:
除突出显示外,C6
的内容是通过以下宏输入的:
Sub Macro1()
Range("C6").Select
ActiveCell.FormulaR1C1 = "=COUNTIFS(C[101],R1C[101],C[105],R1C[105],C[100],R1C[100],C[96],""=""&RC[-2])"
End Sub