INDIRECT函数指定外部参考文件

我正在使用此公式来查找工作表中最后一个有效条目的行号:

(!MAX((ROW([A17U.SI.csv] A17U.SI A:A))*([A17U.SI.csv] A17U.SI!A:A <> “”)))= SUMPRODUCT

我有一个包含“A17U.SI.csv”和“A17U.SI”的值的列表。 有没有可能引用那些与间接function?

此外,引用A:A不应该成为一个string(&A:A),它应该保持dynamic,所以我可以将它拖到其他列。

感谢您的任何意见。

 =SUMPRODUCT(MAX((ROW(INDIRECT("'[" & A3 & "]" & B3 & "'!" & SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","") & ":" & SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1",""))))*(INDIRECT("'[" & A3 & "]" & B3 & "'!" & SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","") &":" & SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","") )<>""))) 

从本质上讲,您只需要通过INDIRECT函数使您的现有配方dynamic化。 使用它时,只需确保使用单引号,括号和感叹号使语法有效。 你的目标是简单地重现你原来公式中硬编码的内容。

你的问题中棘手的部分实际上是dynamic范围参考的需要,这使得公式更加丑陋,因为我们一直不得不包括这个以获得dynamic更新的范围的字母:

 SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","") 

例如,如果您将上面的公式单独放在A列的任何单元格中,则它将评估为“A”。 如果你可以把它放在列中的单元格中,那么你可以简单地引用这个单元格,这会使公式更容易阅读。 例如,如果我们在单元格A1放入=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","") ,那么我们可以这样写:

 =SUMPRODUCT(MAX((ROW(INDIRECT("'[" & A3 & "]" & B3 & "'!" & A1 & ":" & A1)))*(INDIRECT("'[" & A3 & "]" & B3 & "'!" & A1 &":" & A1 )<>""))) 

您在SUMPRODUCT使用INDIRECT时询问了有关语法的问题。 在涉及SUMPRODUCT的时候,如果我们写了INDIRECT部分的话,它不应该和你已经有的语法不同。