Excel数组公式中INDEX调用ADaysIndex序列仅返回首项的解决咨询
解决Excel数组公式中INDEX引用多行区域仅返回首行的问题
问题重现
使用以下数组公式时:
{=MEDIAN(IF(ISNA(INDEX(ASpreadDataBlocDisplay,ADaysIndex,,1)),"~",INDEX(ASpreadDataBlocDisplay,ADaysIndex,,1)))}
其中ADaysIndex是包含1到271序列的单列单元格区域,公式仅返回ASpreadDataBlocDisplay的第一行数据,但单个单元格引用(如B15)时公式正常计算。
解决方案
方法1:调整INDEX引用逻辑,强制返回数组
将公式中INDEX的列参数简化,确保数组运算能正确遍历ADaysIndex的所有值,数组公式需按Ctrl+Shift+Enter输入(Excel 365/2021版本可直接回车):
{=MEDIAN(IF(ISNA(INDEX(ASpreadDataBlocDisplay,ADaysIndex,1)),"~",INDEX(ASpreadDataBlocDisplay,ADaysIndex,1)))}
若仍无效,可直接用序列生成函数替代ADaysIndex区域引用,公式变为:
{=MEDIAN(IF(ISNA(INDEX(ASpreadDataBlocDisplay,ROW(INDIRECT("1:271")),1)),"~",INDEX(ASpreadDataBlocDisplay,ROW(INDIRECT("1:271")),1)))}
方法2:用AGGREGATE函数简化实现
AGGREGATE函数可直接忽略错误值并计算中位数,无需额外IF判断,且无需数组输入:
=AGGREGATE(12,6,INDEX(ASpreadDataBlocDisplay,ADaysIndex,1))
- 参数
12代表计算中位数 - 参数
6代表忽略所有错误值 - 此方法适用于Excel 2010及以上版本
方法3:借助SUMPRODUCT触发数组运算
针对旧版Excel,可通过SUMPRODUCT强制触发数组遍历,无需按数组公式快捷键:
=MEDIAN(IF(ISNA(INDEX(ASpreadDataBlocDisplay,ADaysIndex,1)),"~",INDEX(ASpreadDataBlocDisplay,ADaysIndex,1)))
内容的提问来源于stack exchange,提问作者DataDel
相关产品推荐
相关产品推荐

