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

如何在Google Sheets中实现按项目分组的递归式数据查询?

Google Sheets实现分组项目报表的方法

完全可以实现这种每个项目作为标题、下方展示对应记录的报表格式,用REDUCE结合FILTER就能搞定,以下是具体方案:

假设你的数据范围是A1:D(A列=Item,B列=Date,C列=Cost,D列=Notes,首行为表头),直接在空白单元格输入以下公式:

=REDUCE({"项目","日期","费用","备注"}, SORT(UNIQUE(A2:A)), LAMBDA(acc, item, 
  VSTACK(acc, 
    item,
    FILTER(B:D, A:A=item),
    {"","","",""}
  )
))

公式说明:

  • SORT(UNIQUE(A2:A)):提取所有不重复的项目并按顺序排列,去掉SORT()可以保留原数据的项目出现顺序
  • REDUCE:以初始表头为起点,逐个遍历每个项目,把内容堆叠起来
  • VSTACK:将表头、项目标题、对应的数据记录、空行(用于分隔不同项目)依次拼接
  • FILTER(B:D, A:A=item):筛选出当前项目对应的日期、费用、备注记录

进阶美化(可选)

如果需要给项目标题设置加粗、放大字体的格式,可以用RichTextValueBuilder构建富文本:

=REDUCE(
  RichTextValueBuilder().setText("项目").setFontWeight("bold").build()&{"","日期","费用","备注"},
  SORT(UNIQUE(A2:A)),
  LAMBDA(acc, item, 
    VSTACK(acc, 
      RichTextValueBuilder().setText(item).setFontWeight("bold").setFontSize(14).build(),
      FILTER(B:D, A:A=item),
      {"","","",""}
    )
  )
)

注意事项

  • 你的数据规模(500+项目,总计1-1.5万条记录)会让公式运行需要几秒时间,属于正常范围
  • 如果不需要项目间的空行分隔,删除公式里的{"","","",""}即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:42:35