繁体   English   中英

Google Sheet 中的 ARRAYFORMULA 是否区分硬编码范围和连接范围

[英]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 )构造的动态范围和ARRAYFORMULAARRAYCONSTRAIN函数来检索单元格值的范围?

你对 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM