首页 > 解决方案 > MEDIANIF 使用 CSE 并且需要 INDIRECT

问题描述

约束:
- 有一个计算表和一个数据表
- 对数据表中存在的可以有任何名称的数据执行计算;该名称存储在计算表中的一个单元格中(例如,B1)。
-数据表有 2 个标题行和不确定数量的记录(即包含数据的行)。
- 并非所有行都包含数据,尽管我们已确保所有数据都是有效的数值。
- 保存此数据的特定列存储在计算表中(例如,列T)。

我知道在包含数据的同一张表中执行计算时,正常的 CSE 解决方案有效,例如, {MEDIAN(IF(A3:A9999 <= 3, A3:A9999))}

但是,使用INDIRECT会破坏这种方法:

{MEDIAN(IF(INDIRECT(B1&"!"&T2&"3:"&T2&"9999")<=3, INDIRECT(B1&"!"&T2&"3:"&T2&"9999"))}

这将返回 0 而不是小于或等于 3 的一组数字的中位数。

标签: excel-formula

解决方案


试试下面的公式,需要用CONTROL+SHIFT+ENTER确认...

=MEDIAN(IF(COUNTIF(OFFSET(INDIRECT("'"&B1&"'!"&T2&"3:"&T2&"9999"),ROW(INDIRECT("3:9999"))-3,0,1),"<=3")>0,N(OFFSET(INDIRECT("'"&B1&"'!"&T2&"3:"&T2&"9999"),ROW(INDIRECT("3:9999"))-3,0,1))))

请注意,工作表名称用单引号括起来,以防名称有空格,正如 Scott 已经提到的那样。


推荐阅读