![同一列和不同列中多个条件的平均值](https://linux22.com/image/1419177/%E5%90%8C%E4%B8%80%E5%88%97%E5%92%8C%E4%B8%8D%E5%90%8C%E5%88%97%E4%B8%AD%E5%A4%9A%E4%B8%AA%E6%9D%A1%E4%BB%B6%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC.png)
我必须找出状态 = 新建或开放、严重性 = 4 和区域 = 应用程序的平均天数。
演示表
Area Severity Status Days
Apps 4 new 20 ←
Apps 3 open 10
Node 3 close 0
Device 2 new 25
Apps 4 open 12 ←
Device 1 close 0
Node 4 new 13
指示的行符合所述标准,因此期望的结果AVERAGE(20,12)
当然是 16。我尝试=Average(IF((A:A="Apps")*(B:B="4")*(C:C="new")+(C:C="open"),D:D))
使用 Ctrl++ ,Shift但Enter在使用 averageifs() 时我得到了错误的答案;我收到错误#DIV/0!
。请帮我解决这个问题。
答案1
事实上,您有一个“或”条件,这会搞砸您对 AVERAGEIFS 的使用,因为它只执行“和”条件。我认为最好的方法是用老式的方法计算平均值:
=(SUMIFS(Days,Status,"new",Area,"Apps",Severity,4) +
SUMIFS(Days,Status,"open",Area,"Apps",Severity,4)) /
(COUNTIFS(Status,"new",Severity,4,Area,"Apps") +
COUNTIFS(Status,"open",Severity,4,Area,"Apps"))
为了清楚起见,我将范围更改为命名范围,但您可以用特定的单元格范围替换这些名称。
答案2
你很接近了。你需要遵守运算符优先级规则并将+
子表达式括在括号中:
=AVERAGE(IF((A:A="Apps")*(B:B="4")*((C:C="new")+(C:C="open")), D:D))
↑ ↑