You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Google Sheet:动态合并相同日期对应B列文本内容的技术问询

搞定Google Sheets动态表单的日期分组文本合并

嘿,你这个手动复制粘贴的麻烦事我太懂了!针对表单提交的动态数据需求,我给你两个完全自动的解决方案,以后再也不用手动操作啦~

方案一:一步到位的动态数组公式

这个方案最省心,直接在新区域生成所有合并结果,表单提交新数据时会实时更新。

假设原始数据在A列(日期,A1是表头)、B列(文本,B1是表头),你可以在C1输入日期,D1输入合并内容,然后在C2单元格粘贴下面的公式:

=ARRAYFORMULA({
  UNIQUE(FILTER(A2:A, A2:A<>"")),
  BYROW(UNIQUE(FILTER(A2:A, A2:A<>"")), LAMBDA(date, 
    TEXTJOIN("; ", TRUE, FILTER(B2:B, A2:A=date))
  ))
})

公式里的关键逻辑:

  • UNIQUE(FILTER(A2:A, A2:A<>"")):提取A列所有非空的唯一日期,过滤掉空白行
  • BYROW(...):逐个遍历每个唯一日期,对每个日期执行合并操作
  • TEXTJOIN("; ", TRUE, FILTER(B2:B, A2:A=date)):筛选出当前日期对应的所有B列文本,用; (分号+空格)合并,TRUE会自动忽略空文本

输入后,C、D列会立刻生成所有日期的合并结果,而且只要表单有新数据提交,这个区域会自动同步更新,完全不用管!

方案二:分步骤构建(新手友好版)

如果觉得上面的数组公式有点绕,可以拆成两步来做,逻辑更清晰:

  1. 生成唯一日期列:在C2输入=ARRAYFORMULA(UNIQUE(FILTER(A2:A, A2:A<>""))),这会自动列出所有不重复的日期
  2. 生成合并文本列:在D2输入=BYROW(C2:C, LAMBDA(date, IF(date="", "", TEXTJOIN("; ", TRUE, FILTER(B2:B, A2:A=date))))),这会对应每个日期合并B列的文本

小技巧:

  • 你可以把TEXTJOIN里的"; "换成任何你想要的分隔符,比如", "(逗号+空格),或者用CHAR(10)实现换行合并(记得给单元格设置「自动换行」)
  • 一定要在新列或新工作表里放公式,别碰原始的A、B列!因为表单提交新数据时会自动新增行,可能会覆盖你的公式

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

火山引擎 最新活动