Excel函数:间接地址列

时间:2015-06-10 11:49:54

标签: excel

过去经常阅读后第一次提出问题。

我正在运行以下数组函数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)))  

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

在解析函数的间接部分时,评估此公式会给出值错误,但如果我用列号替换列号公式,则该函数可用,如下所示:

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)))

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

如果我错过了之前回复此类问题的帖子,感谢您提供的任何帮助和道歉。

1 个答案:

答案 0 :(得分:1)

我还没有对此进行测试,但我怀疑问题是由返回数组的COLUMN函数引起的(即使是单个值),有时Excel也无法处理此问题:

您通常可以通过COLUMNSUM函数包裹MAX来使其发挥作用,例如

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

或使用COLUMNS函数,例如

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

可以拖动增量

更好的是用INDIRECT/ADDRESS替换整个INDEX部分,这应该更简单,更短,更有效。如果您有兴趣,我可以为您提供更多详细信息