Excel 2013复杂的countif公式
我有一个源表单设置如下:
Days Open Month 10 1 4 1 6 1 2 1 4 2 2 2 -1 2 4 3 6 3 7 4 3 4
等等
我试图build立一个公式来计算行基于以下标准:
单元格在天打开列<= 5和<> – 1,其中月份是2,3或4(工作表最终将月份数最多为12,我需要按季度分组结果)。 总数必须除以“月份”列中出现2,3或4的所有行的总数。
我似乎无法得到COUNTIFS的第一部分与两个标准一起工作…这是我到目前为止,我正在努力工作:
=COUNTIFS('Cumulative Complaints'!K:K,"<=5",'Cumulative Complaints'!K:K,"<>-1")/(COUNTIF('Cumulative Complaints'!L:L,"2")+COUNTIF('Cumulative Complaints'!L:L,"3")+COUNTIF('Cumulative Complaints'!L:L,"4"))
我一直在这里和其他Excel论坛,并认为也许SUMPRODUCT
是要走的路? 根据“开放天数”列(<= 5和<> – 1)的标准,我还没有能够完成这项工作。
在SUM函数中包装COUNTIF或COUNTIFS函数可以使用一个常量数组作为OR citeria。
=SUM(COUNTIFS('Cumulative Complaints'!K:K, "<>"&-1,'Cumulative Complaints'!K:K, "<="&5,'Cumulative Complaints'!L:L, {2,3,4}))/SUM(COUNTIF('Cumulative Complaints'!L:L, {2,3,4}))
这不是一个数组公式,也不需要CSE。
试试这个SUMPRODUCT()公式:
=SUMPRODUCT(('Cumulative Complaints'!K:K<=5)*('Cumulative Complaints'!K:K<>-1)*('Cumulative Complaints'!L:L>=2)*('Cumulative Complaints'!L:L<=4))/SUMPRODUCT(('Cumulative Complaints'!L:L>=2)*('Cumulative Complaints'!L:L<=4))
使用SUMPRODUCT时,条件AND
被replace为*
。 它要求所有四个条件都为真,返回1; 1 * 1 * 1 * 1 = 1如果有任何错误,它们返回0,所以1 * 1 * 0 * 1 = 0.所以当它遍历行时,它返回一个1或一个0被添加到总和。
我的答案是采取不同的方法。
Excel有一个非常强大的function,称为枢轴表,我认为这可能是一个很好的适合你的问题和其他类似的问题,你可能会面对。
首先,我会在表格中添加几列,如下所示:
Days Open Month Quarter RecentlyOpened 10 1 1 FALSE 4 1 1 TRUE 6 1 1 FALSE 2 1 1 TRUE 4 2 1 TRUE 2 2 1 TRUE -1 2 1 FALSE 4 3 1 TRUE 6 3 1 FALSE 7 4 2 FALSE 3 4 2 TRUE
- Quarter的公式为:
=CEILING(B2/3,1)
- RecentOpened的公式为:
=AND(A2<>-1,A2<=5)
其次,select表格,并执行插入>数据透视表。
第三,从字段拖到框,如下所示:
- 将Quarter拖到ROWS框中
- 最近打开到FILTERS框
- 将月份拖到VALUES框中
第四,单击月总和,然后select值字段设置将总和更改为计数。
第五,将RecentOpenedfilter设置为TRUE。
结果是这样的:
数据透视表通常提供更灵活,更容易阅读和理解的解决scheme,而不是复杂的公式。