求助:ARRAYFORMULA无法填充合并单元格值同时保留空白行
Google Sheet合并单元格向下填充且保留空白行的解决方案
问题背景
我在用有25+协作者的在线Google Sheet,部分单元格是合并状态。想做一个辅助工作表,把合并单元格的内容向下填充,同时保留手动设置的空白行。试过VLOOKUP加FILTER的组合,但没法同时处理好合并单元格和空白行的需求。当前用的无效ARRAYFORMULA公式是:=ARRAYFORMULA(IF(ROW(main!A:A)=1,main!A:A,IF(NOT(ISBLANK(main!A:A)),main!A:A,"")))
可行公式方案
单列处理(以A列为例)
在辅助表的A1单元格输入以下公式:
=ARRAYFORMULA(IF(ROW(main!A:A)=1, main!A:A, IF(main!A:A="", "", LOOKUP(ROW(main!A:A), FILTER(ROW(main!A:A), main!A:A<>""), FILTER(main!A:A, main!A:A<>"")))))
公式原理
ROW(main!A:A):获取每行的行号FILTER(ROW(main!A:A), main!A:A<>""):提取A列所有非空单元格的行号FILTER(main!A:A, main!A:A<>""):提取A列所有非空单元格的内容LOOKUP:匹配当前行号,找到上方最近的非空行对应的内容,实现合并单元格内容向下填充- 外层
IF(main!A:A="", "", ...):确保原表中手动设置的空白行在辅助表中保持空白,只有原单元格非空时才填充内容
多列批量处理(以A-C列为例)
如果需要一次性处理多列,用以下公式:
=ARRAYFORMULA(IF(ROW(main!A:C)=1, main!A:C, IF(main!A:C="", "", LOOKUP(ROW(main!A:C), FILTER(ROW(main!A:C), main!A:C<>""), FILTER(main!A:C, main!A:C<>"")))))
注意:如果原表表头不在第一行,把公式里的ROW(main!A:A)=1改成对应表头行号即可。
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

