根据另一个Excel中的值,在一个Excel列中取平均值

时间:2016-12-19 18:52:24

标签: excel vba

我在Excel中有一个(大)数据数组,我需要根据另一列的值计算一列中某些值的平均值。例如,这是我的数据片段:

enter image description here

具体来说,我想取与行值1对应的F635平均值的平均值。为了更进一步,我希望这继续行值为2,行值为3等。

我不熟悉如何在Excel中运行代码,但尝试使用以下方法解决此问题:

=IF($C = "1", AVERAGE($D:$D), "")

(我的理解)可以解释为"如果C列中的值(任何地方)等于1,则取D列中相应值的平均值。"

当然,当我尝试这个时,我从Excel中得到一个公式错误。

任何指导都会非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

Excel已经有一个内置函数正好用于此用途; AVERAGEIF()

=AVERAGEIF(C:C,1,D:D)

答案 1 :(得分:0)

对于更复杂的情况,我会使用数组公式。对于AVERAGEIF公式,这个很简单。例如=AVERAGEIF(A1:A23;1;B1:B23)

Array-formula允许更精细的ifs。要复制上述内容,您可以执行=SUM(IF($A$1:$A$23=1;$B$1:$B$23;0))/COUNT(IF($A$1:$A$23=1;$B$1:$B$23;0))。 看起来更多的工作,但你可以创建非常精细的if语句。输入公式时,请执行CTRL-ENTER,而不是按ENTER键。在标准之间使用*来复制AND或+用于OR。示例:SUM(IF(($A$1:$A$23="apple")*($B$1:$B$23="green");$C$1:$C$23;0))在c1:c23中计算绿苹果的值。

您的示例数据包含三个具有潜在ifs的列,因此我的猜测是您在某个时候需要数组公式。