计算多个标准

时间:2013-08-29 08:09:38

标签: excel vba excel-vba excel-formula countif

我正在尝试计算多个条件并让代码以某种方式与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个不同条件的列。所以我必须为每个条件编码。但这并不适合我,因为我整个月都必须做同样的事情。

解释

单元格A2A32保留日期,比如从8月1日到8月31日。 原始数据表(在同一张纸上)的日期位于CU列(可能是60000+行)。 列CZDDCY等具有必须满足的条件才能计算。

问题

我想要做的是,如果CU列中的日期= A2中的日期,那么它将计入第2行,如果CU列中的日期=日期在A3中,它将计入第3行。

这样我可以整个月编写一个代码,而不是每天分别编写代码。

1 个答案:

答案 0 :(得分:2)

我首先提供这种类型的公式(如果愿意,可以使用WorksheetFunction)的解决方案:

=COUNTIFS(CZ:CZ,"=1",DD:DD,"=2",CY:CY,"=3", ... CU:CU,"="&A2)  

和显示结果的图像(黄色单元格)取决于所选日期:

SO18505472 example

为了便于说明,它计算在A2中选择的日期上与Row1中显示的硬编码标准匹配的实例数。

没有标准的硬编码,但可能与OP稍微更好的“匹配”并有更多示例:

SO18505472 second example

除突出显示外,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