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