具有多个标准的CountIfs?

时间:2016-05-20 17:48:34

标签: excel-formula

我有一张这样的表:

Date Paid   Days Late   Date Paid   Days Late   Date Paid   Days Late   Date Paid   Days Late   Date Paid   Days Late   Date Paid   Days Late
        Utilities       Admin       Utilities       Admin       Utilities       Admin   
    Company January January January January February    February    February    February    March   March   March   March
    Wayne Enterprises   2/15/2016   5   10-Feb  0   3/11/2016   1           4/15/2016   5   4/25/2016   15
    Stark Industries    2/12/2016   3   2/8/2016    0   3/19/2016   10  3/8/2016    0   4/15/2016   5   4/1/2016    0

(我建议虽然看一下screenshot看看它是如何布局的,因为这里的粘贴不是很漂亮,有任何提示吗?Here's a link在Google Spreadsheets上这样做。

我如何在N4中创建一个公式,该公式将计算具有延迟报告的月数(定义为任何“延迟天数”超过0)。显然,我可以这样做:

=COUNTIFS(B1:M1,"Days Late",B4:M4,">0"),返回4

对于Wayne Enterprises,3月份,公用事业和管理人员都迟到了。但是,这应该算作1个月。我怎么能以某种方式添加到我的CountIfs()一个声明,如果“如果同一个月中的两个值大于0,则视为一个月”?

我也尝试过这样的事情:

=COUNTIFS(B1:M1,"Days Late",B4:M4,">0")/COUNTIFS(B1:M1,"Days Late",B4:M4,">0")+1

但这也不是很有效。谢谢你的任何想法。 (当然,如果CountIfs()不是最好的方式,我对任何其他公式持开放态度!我有一种潜行的怀疑SumProduct()可能是另一种选择)我更喜欢VBA的公式解决方案,但如果绝对必要,我们也许可以做一个UDF。

编辑:我可以创建另一个帮助列来比较一个月的公用事业和管理员,如果其中一个或两个都迟到,请添加1,然后只有Countif()该列有1在它...但我宁愿不继续创建列,如果我可以帮助它,因为我将这样做12个月。

1 个答案:

答案 0 :(得分:1)

使用此数组公式:

=SUM(IF(($B4:$M4>0)*($B$1:$M$1="Days Late"),1/COUNTIFS($B$3:$M$3,$B$3:$M$3,$B4:$M4,">0",$B$1:$M$1,"Days Late")))

作为数组公式,必须在退出编辑模式时使用 Ctrl - Shift - Enter 进行确认。如果正确完成,则会将{}放在公式周围。

enter image description here

根据您的新数据,请使用:

=SUM(IF(($B5:$BI5>0)*($B$1:$BI$1="Days past 10th of Following Month"),1/COUNTIFS($B$3:$BI$3,$B$3:$BI$3,$B5:$BI5,">0",$B$1:$BI$1,"Days past 10th of Following Month")))

不需要第4行中的辅助行。

编辑#2

我的不好我忘记了当使用返回""的公式时会导致错误,所以我们来检查一下:

=SUM(IF(($B5:$BI5<>"")*($B5:$BI5>0)*($B$1:$BI$1=$AS$1),1/COUNTIFS($B$3:$BI$3,$B$3:$BI$3,$B5:$BI5,">0",$B$1:$BI$1,$AS$1)))