在Google表格中使用ARRAYFORMULA函数时,可以按预期方式在以下公式中对目标范围进行硬编码:
=ArrayFormula(Sheet1!$FH$3:Sheet1!$GH$3)
与ARRAYCONSTRAIN相同:
=ARRAY_CONSTRAIN(Sheet1!$FH$3:Sheet1!$GH$3,1,27)
当使用CONCATENATE和其他嵌套函数来动态设置范围值时,这些公式将失败:
=ArrayFormula(CONCATENATE(CELL("address",OFFSET(INDIRECT(CELL("address",INDEX(Sheet1!3:3,,MATCH(TODAY(),Sheet1!3:3,1)))),0,-26)),":",CELL("address",INDEX(Sheet1!3:3,,MATCH(TODAY(),Sheet1!3:3,1)))))
以上公式仅返回引用的范围(即“ Sheet1!$ FH $ 3:Sheet1!$ GH $ 3”),而不返回范围值。我尝试使用大括号{
和}
以及ctrl-shift-enter
。
是否有一种方法可以将通过CONCATENATE
或JOIN
函数使用由ARRAYFORMULA
或类似函数(例如ARRAYCONSTRAIN
)构造的动态范围检索单元格值的范围?
答案 0 :(得分:1)
您只可以选择:
=ARRAYFORMULA(Sheet1!$FH$3:$GH$3)
无需重复工作表名称
,在构造范围时,您总是需要像这样使用INDIRECT
:
=ARRAYFORMULA(INDIRECT("Sheet1!FH3:GH3"))
上面的公式仅返回引用的范围(即“ Sheet1!$ FH $ 3:Sheet1!$ GH $ 3”),而不返回范围值
在您的情况下,请尝试:
=ARRAYFORMULA(INDIRECT(CONCATENATE(CELL("address", OFFSET(INDIRECT(
CELL("address", INDEX(Sheet1!3:3,, MATCH(TODAY(), Sheet1!3:3, 1)))), 0, -26)),":",
CELL("address", INDEX(Sheet1!3:3,, MATCH(TODAY(), Sheet1!3:3, 1))))))
可以简化为:
=ARRAYFORMULA(INDIRECT(CELL("address", OFFSET(INDIRECT(
CELL("address", INDEX(Sheet1!3:3,, MATCH(TODAY(), Sheet1!3:3, 1)))), 0, -26))&":"&
CELL("address", INDEX(Sheet1!3:3,, MATCH(TODAY(), Sheet1!3:3, 1)))))