[英]Does ARRAYFORMULA in Google Sheet Distinguish Between Hard-Coded Ranges and CONCATENATEd Ranges
在 Google 表格中使用 ARRAYFORMULA function 时,以下公式中的目标范围硬编码可按预期工作:
=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
函数来检索单元格值的范围?
你对 go 很好,只有:
=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)))))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.