Google Sheets中用INDIRECT动态合并命名区域(无需Apps Script)
动态合并可变数量的命名区域(无需Google Apps Script)
可行解决方案
可以实现,使用REDUCE+VSTACK+INDIRECT组合即可处理数量变化的命名区域合并,公式如下:
=REDUCE("", A13:A, LAMBDA(acc, x, IF(x="", acc, VSTACK(acc, INDIRECT(x)))))
公式说明
REDUCE:以空值为初始累计结果,遍历存储命名区域名称的A13:A区域LAMBDA(acc, x):acc代表当前已合并的结果,x是当前遍历到的命名区域名称IF(x="", acc, VSTACK(acc, INDIRECT(x))):若当前单元格为空则保留累计结果,否则通过INDIRECT引用对应命名区域,再用VSTACK将其追加到累计结果末尾
为何此前的方法无效
INDIRECT仅负责解析合法的单元格/区域引用字符串,无法识别数组字面量(如{citrics;berries})或完整公式字符串(如{INDIRECT("citrics");INDIRECT("berries")}),它不具备执行公式的能力,只能处理标准引用格式。- 静态写法
={INDIRECT("citrics");INDIRECT("berries")}生效,是因为这是表格内置的数组字面量语法,由表格引擎直接解析执行,并非依赖INDIRECT处理。
内容的提问来源于stack exchange,提问作者Nicolás Fernández Fioretti
相关产品推荐
相关产品推荐

