能否用ARRAYFORMULA实现问卷数据自动非空拼接并适配新增行?
解决方案
一、自动适配新增行的逐行拼接公式
针对新增回复时公式引用偏移、无法自动适配的问题,用MAP+LAMBDA组合实现数组式逐行处理,替代手动填充:
=IFNA(MAP(Eureka!A3:AO, LAMBDA(row, TEXTJOIN("|", TRUE, FILTER(Eureka!$A$2:$AO$2&"_"&row, row>0)))))
公式说明:
MAP(Eureka!A3:AO, LAMBDA(row, ...)):遍历Eureka表第3行及以下的每一行数据,将整行内容作为row变量传入后续逻辑TEXTJOIN("|", TRUE, FILTER(...)):对当前行过滤出值大于0的单元格,拼接对应列标题与单元格内容,自动忽略空值IFNA:处理无符合条件数据的行,返回空值避免报错
该公式会自动适配Eureka表新增的回复行,无需手动向下填充,也不会出现引用偏移问题。
二、将每个问题拆分为单独行(重复前两列)
如果要实现每个问题单独成行、重复前两列信息的最终目标,可使用以下整合公式:
=LET( source_cols, Eureka!A3:B, joined_data, MAP(Eureka!A3:AO, LAMBDA(row, TEXTJOIN("|", TRUE, FILTER(Eureka!$A$2:$AO$2&"_"&row, row>0)))), combined, HSTACK(source_cols, joined_data), split_items, FLATTEN(SPLIT(INDEX(combined,,3), "|")), repeated_cols, INDEX(combined, ROUNDUP(SEQUENCE(COUNTA(split_items))/BYROW(joined_data, LAMBDA(x, COUNTA(SPLIT(x, "|")))), {1,2})), HSTACK(repeated_cols, split_items) )
公式说明:
source_cols:引用Eureka表需要重复的前两列数据joined_data:生成每行的拼接内容(逻辑与第一个公式一致)combined:将前两列与拼接列合并为一个区域split_items:把所有拼接内容按|拆分并展开为单行列表repeated_cols:根据拆分后的问题数量,自动重复对应行的前两列信息HSTACK:合并重复的前两列与拆分后的问题内容,得到最终结果
该公式会自动识别Eureka表的新增回复,全程无需手动维护。
内容的提问来源于stack exchange,提问作者Rachel Miller
相关产品推荐
相关产品推荐

