我正在使用此公式查找工作表中最后一个有效条目的行号:
= SUMPRODUCT(MAX((ROW([A17U.SI.csv] A17U.SI A:A))*([A17U.SI.csv] A17U.SI答:!A<>" ")))
我有一个包含多个值的列表,包括" A17U.SI.csv"和" A17U.SI"。是否可以引用具有INDIRECT功能的那些?
此外,参考A:A不应该成为一个字符串(& A:A),它应该保持动态,所以我可以将它拖到其他列。
感谢您的任何意见。
答案 0 :(得分:1)
=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
函数使现有公式动态化。使用它时,您只需确保使用单引号,括号和感叹号来使语法有效。您的目标只是在原始公式中重现您在其中硬编码的内容。
你问题的棘手部分实际上是需要一个动态范围引用,这使得公式更加丑陋,因为我们不得不包含这个来以一种动态更新的方式获取范围的字母:
SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
例如,如果您将上述公式单独放在A列的任何单元格中,它将评估为“A”。如果你可以把它放在列中自己的单元格中,那么你可以简单地引用那个单元格,它会使公式更容易阅读。例如,如果我们将=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
放在单元格A1
中,那么我们可以写:
=SUMPRODUCT(MAX((ROW(INDIRECT("'[" & A3 & "]" & B3 & "'!" & A1 & ":" & A1)))*(INDIRECT("'[" & A3 & "]" & B3 & "'!" & A1 &":" & A1 )<>"")))
您在INDIRECT
中使用SUMPRODUCT
时询问了语法。当涉及SUMPRODUCT
时,如果我们正确地写了INDIRECT
部分,那么它的语法应该与您已有的语法不同。