arrays - Google Sheet 中的 ARRAYFORMULA 是否区分硬编码范围和连接范围
问题描述
在 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
orARRAYCONSTRAIN
函数来检索单元格值的范围?
解决方案
你最好只去:
=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)))))
推荐阅读
- java - 将日期从角度日期选择器传递到 Java 后端的理想方法?
- google-cloud-platform - 用于 OnPrem 的 GCP 堆栈驱动程序
- python - 向现有 pandas 数据框添加行的最快方法
- .net-core - Azure Functions 中的 Application Insights 端到端多组件日志记录
- php - Xpath 使用子节点删除 XML 中的空节点
- .net-core - iText7 pdfHTML c# 不尊重 linux/unix 系统上的 baseuri
- jquery - 可拖动不是函数
- azure-data-studio - Azure Data Studio(以前称为 SQL Operations Studio)图表结果
- c# - 连接和分区方式中的嵌套选择
- embedded-linux - 如何检查socketcan中的总线状态