在 Excel 中计算平均值,不包括包含日期或零或文本的单元格

在 Excel 中计算平均值,不包括包含日期或零或文本的单元格

在此处输入图片描述

在 B6 中,我想计算范围 c6:h6 的平均值,跳过具有日期、零或非文本值的单元格。

结果应为 - 400

我尝试使用带有过滤器的 averageif 例如: =AVERAGE(FILTER(C6:H6,ISNUMBER(C6:H6))) 但没有得到正确的结果

谢谢

答案1

=AVERAGEIFS(C5:H5,"Amount",C6:H6, ">0", C6:H6)

答案2

在您的具体情况下,请使用以下内容,并根据您的确切单元格范围进行编辑:

=AVERAGE(INDEX(C1:H1,1,SEQUENCE(1,COLUMNS(C1:H1)/2,2,2)))

编辑输入范围以匹配您的精确输入范围。如果您有成对的值,则可以找到的C1:J1第二个参数,如下所示。SEQUENCE()

AVERAGE()似乎会自行忽略零值。我可能十年前就用过它了,但事情会变,我的记忆也可能是错的。因此,它会忽略零条目(在我的测试中确实如此),无论是在求和时还是在决定除以什么值时。

上述更新:它忽略空白和文本,但不忽略实际的零。因此,如果存在不应成为平均值一部分的零(如果是这样,似乎根本不应该输入它们,但现实生活往往与逻辑生活不符......),要么是因为它们不应该输入,但输入了,或者因为即使它们是合法值,人们只是不想使用它们,那么当的公式可以很好地处理它们时,没有理由再沿着这条路走向更复杂的公式Mobus。但是,如果这些值来自计算,并且零只是作为所述公式的默认输出出现,它会很乐意忽略""条目,因此单元格中的公式可以得到一个很好的IF()结果,""而不是0。仍然......从类似的复杂性转变为更复杂,所以Mobus仍然是首选。

虽然这很好(我预计困难的部分是消除零条目,尽管看起来类似的东西FILTER(TRANSPOSE())可以解决问题),但它确实意味着当没有条目时,你将除以零,因此得到一个你可能需要计划的错误。

使这种方法适用于您提出的确切情况的原因是数据结构的规律性。它允许知识分离出这些日期条目,而不是将它们包含在传递给的数组中AVERAGE()。如果您的数据实际上很混乱,那么这种方法将不起作用,至少在不对数据进行一些处理的情况下不会起作用。

不管怎样,你有什么收获?Excel 通常不需要过于复杂的东西,因为有关数据的了解通常可以大大简化你实际需要 Excel 为你做的事情。比如将简单的代数应用到一个问题上,得到一个简单的最终结果,然后在你的 Excel 公式中计算出这个简单的最终结果,而不是原始的、甚至难以表述的问题陈述。

(人们经常在这时候大肆宣扬从一开始就让数据结构“正确”,但并非每个人都有这样的奢侈而像这样的公式必须成为将一切联系在一起的桥梁。也就是说,如果你有能力改变你的数据结构,那么这可能会使电子表格更容易理解和维护。)

嗯...我看到你用 2007 和 2010 版本标签标记了。这有点不同,因为你需要SEQUENCE()以不同的方式生成序列。这将做到这一点:

=AVERAGE(INDEX(C1:J1,1,  ROW(INDIRECT("1:"&(COLUMNS(C1:H1)+2)/2))*2)  )

答案3

在 Excel 2007 及更高版本中:
=AVERAGEIF($5:$5,"Amount",6:6)

在 2007 之前的 Excel 版本中,您可以尝试此操作大批公式:

B2: =AVERAGE(IF($5:$5="Amount",6:6,"x"))

在早期版本的 Excel 中,输入/确认数组公式,按住ctrl+shift并点击enter。如果你操作正确,Excel 会{...}在公式栏中显示的公式周围放置括号。

笔记

  • AVERAGE函数将忽略文本

在此处输入图片描述

相关内容