我有一些数据分布在 6500 多行和 12 列中。一些列具有来自一组 3 个数字的值(输入列),而其他列具有所有唯一值(输出列)。
我在输入列上使用 Excel 过滤器,以根据特定的输入集过滤掉一些行。我相信 excel 中的过滤器只是隐藏了不满足过滤器的行。我需要得到过滤输出列的平均值。过滤后的数据在行中没有连续或统一的放置,因此我无法(轻松)指定范围以使用平均公式。
如何获得过滤行的平均值?
示例数据 -链接
示例数据解释 - A 列和 B 列(输入列)从特定集合(即分别为 {5,10,15} 和 {20,40,60})获取其值。C 列和 D 列(输出列)在所有单元格中都具有唯一值。假设我像这样放置过滤器-
在列 A 上过滤所有行value=5
。这会过滤掉第 1、2、7、10 行。现在我希望获得 C 列和 D 列中这些过滤后的值行的平均值。
答案是
=SUBTOTAL(1,...)
。它只考虑可见的单元格。例如
SUBTOTAL 是一个函数,可让您执行不同类型的聚合计算(例如,SUM、AVERAGE、COUNT、MAX 等),以及选择是否包括手动隐藏的值。第一个参数指定你想要的聚合函数,以及是否忽略手动隐藏的值。对于 AVERAGE,参数值
1
包括隐藏值,101
不包括隐藏值。通过过滤器隐藏的值始终被排除在外,因此1
or都101
适用于此示例。您还可以包括一个不连续范围的列表,它不限于单个范围规范。有关您可以使用 SUBTOTAL 做什么的更多说明,请参阅此链接放入
=IF($D$16=A1,C1,"")
F1 并拖动直到 F12。然后,放入
=AVERAGE(F:F)
E16。并在 D16 中输入值“5”。
完毕。
p/s : 如果您必须满足多个条件,请使用 if()、or() 或 and()。然后使用 average() 获得您想要的结果。
希望能帮助到你。( :