问题 如何在考虑过滤器的情况下找出列的MEDIAN?


我最近发现你可以使用 SUBTOTAL 用于各种功能,允许您总结或查找列的总数,即使在应用了过滤器的情况下也是如此。

但是,功能列表 SUBTOTAL 不包括在内 MEDIAN

是否有可能找到一些数字的中位数,其中某些行已被滤除?


9353
2017-08-28 14:08


起源



答案:


更新以从下面的lori_m中获取评论

1.原始答案 - 所有xl版本
礼貌 Aladin Akyurek来自这个解决方案 如果您的数据位于A1:A10,则数组输入此公式 =MEDIAN(IF(SUBTOTAL(3,OFFSET(A1:A10,ROW(A1:A10)-MIN(ROW(A1:A10)),,1)),A1:A10))

2.更新的答案(非阵列) - 所有xl版本 =MEDIAN(IF(SUBTOTAL(3,OFFSET(A1:A10,MMULT(ROW(A1:A10),1)-MIN(MMULT(ROW(A1:A10),1)),,1)),A1:A10))

3. Excel 2010和Excel 2013
=AGGREGATE(12,5,A1:A10)


16
2017-08-28 14:21



打败我吧:) - Joseph Serido
@brettdj:谢谢你的工作。你知道你有什么理由按shift ctrl并输入? - Diskdrive
@Diskdrive:在Excel 2010或2013预览中,您可以使用: =AGGREGATE(12,5,A1:A10)。上面的公式是一个数组公式 - 参见例如: cpearson.com/excel/ArrayFormulas.aspx 但您可以通过更改来正常输入 ROW(A1:A10) 至 MMULT(ROW(A1:A10),1)。 - lori_m
@lori_m我喜欢 MMULT 方法(就交叉xl版方法而言)。 - brettdj
@brettdj:我也是......在我的Excel 2010中,非阵列版本填充速度提高了两倍,重新计算速度提高了10%(通过复制100,000个单元格进行测试)。 - lori_m


答案:


更新以从下面的lori_m中获取评论

1.原始答案 - 所有xl版本
礼貌 Aladin Akyurek来自这个解决方案 如果您的数据位于A1:A10,则数组输入此公式 =MEDIAN(IF(SUBTOTAL(3,OFFSET(A1:A10,ROW(A1:A10)-MIN(ROW(A1:A10)),,1)),A1:A10))

2.更新的答案(非阵列) - 所有xl版本 =MEDIAN(IF(SUBTOTAL(3,OFFSET(A1:A10,MMULT(ROW(A1:A10),1)-MIN(MMULT(ROW(A1:A10),1)),,1)),A1:A10))

3. Excel 2010和Excel 2013
=AGGREGATE(12,5,A1:A10)


16
2017-08-28 14:21



打败我吧:) - Joseph Serido
@brettdj:谢谢你的工作。你知道你有什么理由按shift ctrl并输入? - Diskdrive
@Diskdrive:在Excel 2010或2013预览中,您可以使用: =AGGREGATE(12,5,A1:A10)。上面的公式是一个数组公式 - 参见例如: cpearson.com/excel/ArrayFormulas.aspx 但您可以通过更改来正常输入 ROW(A1:A10) 至 MMULT(ROW(A1:A10),1)。 - lori_m
@lori_m我喜欢 MMULT 方法(就交叉xl版方法而言)。 - brettdj
@brettdj:我也是......在我的Excel 2010中,非阵列版本填充速度提高了两倍,重新计算速度提高了10%(通过复制100,000个单元格进行测试)。 - lori_m


真正, SUBTOTAL 不包括 MEDIAN 但是你可以先用它来获得它 SUBTOTAL 接着 替换Excel公式的一部分 在您需要的几个或多个列/单元格中 MEDIAN

想象一下你用过 AVERAGE 在Excel小计函数中,那么公式将是例如= SUBTOTAL(1; E10:E12) 现在,替换所有出现的 "SUBTOTAL(1;" 同 "MEDIAN(" (没有引号)。


0
2018-05-19 14:00