You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单公式(reduce/tocol/vstack)在指定列内容变化时插入空行?

单公式实现指定列内容变化时自动插入空行

针对你需要在「水果」列内容变化时自动插入空行的需求,这里提供一个适用于Google Sheets的单行公式解决方案:

假设你的初始数据(不含标题)在A2:B7,标题行在A1:B1,公式如下:

=VSTACK(A1:B1,REDUCE("",SEQUENCE(ROWS(A2:B7)),LAMBDA(acc,i,LET(curr_fruit,INDEX(A2:A7,i),next_fruit,IF(i=ROWS(A2:A7),"",INDEX(A2:A7,i+1)),curr_row,INDEX(A2:B7,i,),IF(curr_fruit<>next_fruit,VSTACK(acc,curr_row,{"",""}),VSTACK(acc,curr_row))))))

公式逻辑说明

  1. VSTACK(A1:B1, ...):将标题行与后续处理好的数据堆叠,保留表头结构
  2. REDUCE("", SEQUENCE(ROWS(A2:B7)), ...):遍历数据的每一行,用acc变量累积最终结果
  3. LET(...):定义临时变量简化公式:
    • curr_fruit:当前行的「水果」列值
    • next_fruit:下一行的「水果」列值(最后一行设为空字符串,避免越界)
    • curr_row:当前行的完整数据(水果+数量)
  4. 条件判断:如果当前行的水果与下一行不同,就将当前行和空行一起加入累积结果;否则仅加入当前行,实现同组数据结束后插入空行的效果

动态数据适配

如果你的数据会动态新增,可以把固定区域A2:B7替换为动态区域,自动识别非空行:

=LET(data,A2:INDEX(B:B,COUNTA(A:A)),VSTACK(A1:B1,REDUCE("",SEQUENCE(ROWS(data)),LAMBDA(acc,i,LET(curr_fruit,INDEX(data,i,1),next_fruit,IF(i=ROWS(data),"",INDEX(data,i+1,1)),curr_row,INDEX(data,i,),IF(curr_fruit<>next_fruit,VSTACK(acc,curr_row,{"",""}),VSTACK(acc,curr_row)))))))

代入你提供的示例数据后,将直接生成你期望的输出格式。

内容的提问来源于stack exchange,提问作者Alex M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:05:05