我想计算一个范围内的平均值(图中B1:B12或C1:C12),不包括:
#NA
,文本等(此处为B1 + B8:B12或C1 + C8:C12)。我认为不可能使用任何内置的AVERAGE
类功能。然后,我尝试计算总和,计数和除法。当我在范围内有#N/A
时,我可以计算计数(F2和F7),但不计算总和(F3),例如
我该怎么做?
注意:
SUBTOTAL
。
答案 0 :(得分:4)
您可以通过使用基于嵌套IF的数组公式来完成此操作,以提供至少部分条件。当IF
解析为 FALSE 时,它不再处理语句的 TRUE 部分。
F2:F3中的数组公式是
=SUM(IF(NOT(ISNA(B2:B13)), (A2:A13>=7)*(A2:A13<=35)*(B2:B13<>"")))
=SUM(IF(NOT(ISNA(B2:B13)), IF(B2:B13<>"", (A2:A13>=7)*(A2:A13<=35)*B2:B13)))
F7:F8中的数组公式是
=SUM(IF(NOT(ISNA(C2:C13)), (A2:A13>=7)*(A2:A13<=35)*(C2:C13<>"")))
=SUM(IF(NOT(ISNA(C2:C13)), IF(C2:C13<>"", (A2:A13>=7)*(A2:A13<=35)*C2:C13)))
需要使用 Ctrl + Shift + Enter↵来最终确定数组公式。一旦输入正确,如有必要,它们可以像任何其他公式一样填充。
数组公式以对数方式增加计算负荷,因为它们引用的范围扩展。尽量将多余的空行保持在最低限度,避免完整的列引用。
答案 1 :(得分:4)
从 https://stackoverflow.com/a/30242599/2103990:
假设您正在使用Excel 2010及以上AGGREGATE function 可以选择忽略所有错误。
=AGGREGATE(1, 6, A1:A5)
答案 2 :(得分:1)
您可以获得&#34; NA&#34;的平均值。列值在一个相当简单的公式中,如下所示:
=AVERAGE(IF(
(
($A$2:$A$13>=$F$2)*
($A$2:$A$13<=$F$3)*
ISNUMBER(B2:B13)
)>0,
B2:B13))
使用 Ctrl Shift Enter↵作为数组公式输入。
我发现这是一种非常清晰的写作方式,因为你所有的条件都是彼此相邻的。他们&#34;&#34;&#34;&#34;使用数学运算符*
;这当然分别将TRUE和FALSE值转换为1和0,因此当完成和转换时,我使用>0
将它们转换回TRUE / FALSE。请注意,我不是硬编码阈值7和35(硬编码文字通常被认为是不好的做法),而是将它们放在单元格中。
你的金额和计数的逻辑相同;只需将AVERAGE
替换为SUM
和COUNT
:
=SUM(IF((($A$2:$A$13>=$F$2)*($A$2:$A$13<=$F$3)*ISNUMBER(B2:B13))>0,B2:B13))
=COUNT(IF((($A$2:$A$13>=$F$2)*($A$2:$A$13<=$F$3)*ISNUMBER(B2:B13))>0,B2:B13))
虽然更简洁的公式也可用于计算:
=SUM(($A$2:$A$13>=$F$2)*($A$2:$A$13<=$F$3)*ISNUMBER(B2:B13))
相同的公式可用于平均/总计/计算您的&#34;空白&#34;柱。在这里,我只是向右拖动一列(G列),这意味着B2:B13
的所有实例都变为C2:C13
。