Excelfunction:间接地址栏

第一次在读过很多东西后问一个问题。

我正在运行以下数组函数excel:

INDEX('Available Options'!$A$1:$CM$137,$B$1, SMALL( IF( INDIRECT("'Feasibility Options'!"&ADDRESS($B$1,COLUMN('Feasibility Options'!$G$1),1,1)&":"&ADDRESS($B$1,COLUMN('Feasibility Options'!$O$1),1,1))=2, COLUMN(INDIRECT("'Feasibility Options'!"&ADDRESS($B$1,COLUMN('Feasibility Options'!$G$1),1,1)&":"&ADDRESS($B$1,COLUMN('Feasibility Options'!$O$1),1,1)))), ROW('Available Options'!1:1))) 

其背后的思想是,在一个名为“可行性选项”的单独选项卡中,有许多单元格(1表示默认,2表示替代,3表示不活动)中有1个,2个或3个单元格,选项保存在“可用选项”选项卡中。 $ B $ 1包含通过单独计算生成的行号。

评估这个公式时,在parsing函数的间接部分时给出了一个值错误,但是如果我用如下的列号replace列号公式,这个函数将起作用:

 INDEX('Available Options'!$A$1:$CM$137,$B$1, SMALL( IF(INDIRECT("'Feasibility Options'!"&ADDRESS($B$1,7,1,1)&":"&ADDRESS($B$1,15,1,1))=2,COLUMN(INDIRECT("'Feasibility Options'!"&ADDRESS($B$1,7,1,1)&":"&ADDRESS($B$1,15,1,1)))),ROW('Available Options'!1:1))) 

有人可以解释为什么会发生这种情况,以及如何解决? 理想情况下,我需要使用单元格引用而不是硬编码的列号,因为我可能需要在以后添加更多的列。

感谢您的帮助,如果我错过了上一个回答这类问题的线索,可以给予和道歉。

我没有testing过这个,但我怀疑这个问题是由返回一个数组的COLUMN函数引起的(即使是一个单一的值),有时Excel有麻烦处理:

您通常可以通过在SUMMAX函数中包装COLUMN来工作,例如

MAX(COLUMN('Feasibility Options'!$G$1))

或者使用COLUMNS函数来代替

COLUMNS('Feasibility Options'!$G$1:G1)

可以拖动来增加

更好的办法是用INDEX代替整个INDIRECT/ADDRESS零件,这应该更简单,更短,更高效。 如果你有兴趣,我可以给你更详细的信息