不幸的是,Excel 不允许在数据透视表中进行中值计算,所以我尝试使用公式做类似的事情。
就我的例子来说,我有 5 列数据(AE)。
我的 A 列和 B 列具有不同的数据分类变量。E 列包含我需要中位数的数据。但是,我希望从 A 列和 B 列中筛选出某些值,以便仅计算具有这些筛选值的行的中位数(就像我在数据透视表中所做的那样)
有谁知道最好的公式,即当 A=x 和 B=y 时,计算 E 列的中位数。因此,只有当 A=x 和 B=y 时,该公式才成立。我尝试了几个 IF 公式,但它们似乎没有给出正确的答案。
谢谢你!
答案1
来自 MEDIAN 的帮助文件,我们会看到“如果数组或引用参数包含文本、逻辑值或空单元格,则忽略这些值;但是,包含值为零的单元格。”因此,一个解决方案是(假设在 F 列中)设置一个 IF 公式,如果满足条件,则返回 E 列中的值,如果""
不满足条件,则返回类似值。然后只需取 F 列的中位数。
假设我只想知道棕色眼睛的狗的可爱程度的平均值:
得出所需的结果:
这不是一个绝妙的解决方案,但它是一个可行的解决方案。您可以非常清楚地看到哪些单元格已被选中,因此您可以立即看到是否使用了正确的IF
,但缺点是您可能不希望以这种方式使用列。
“更聪明”的方法是使用数组公式,但这并不能让您直观地检查您选择了哪些单元格:
=MEDIAN(IF((A2:A9="Dog")*(B2:B9="Brown"),E2:E9,""))
请记住按 CONTROL-SHIFT-ENTER 完成数组公式的输入;仅按 Enter 键是不够的。IF
数组公式中的 有效地仅选择 E2:E9 中符合条件的单元格,然后MEDIAN
仅适用于您想要的单元格。这意味着您可以执行类似以下操作来根据各种条件获取中位数表:
注意绝对和相对单元格引用,这样可以更轻松地拖动公式!例如,中的数组公式H2
应如下所示;请注意,H$1
行是固定的,但列会随着拖动而变化,反之亦然$G2
。
=MEDIAN(IF(($A$2:$A$9=H$1)*($B$2:$B$9=$G2),$E$2:$E$9,""))
这给出了一个方便的结果表。