Google Sheets按条件合并多行数据生成工单邮件内容的实现问题
Google Sheets 自动生成分组邮件正文的数组公式解决方案
需求回顾
在Tickets工作表的A2单元格设置数组公式,根据Tickets!E1的布尔值实现两种模式:
- 当
E1=FALSE:为Data Export工作表的每条数据单独生成带链接和类型的邮件正文 - 当
E1=TRUE:按Tickets!B2:B的链接分组,将同一链接下的所有数据合并为单条邮件正文
完整实现公式
=IF(E1=FALSE, ARRAYFORMULA(IF(ISBLANK('Data Export'!A2:A),"","Please ingest the following data "&CHAR(10)&'Data Export'!A2:A&CHAR(10)&"under the link "&B2:B&" as "&'Data Export'!C2:C)), BYROW(UNIQUE(FILTER(B2:B,B2:B<>"")),LAMBDA(link, "Please ingest the following data:"&CHAR(10)& JOIN(CHAR(10),FILTER('Data Export'!A2:A,'Data Export'!B2:B=link))&CHAR(10)& "under the link "&link&" as "&INDEX(UNIQUE(FILTER('Data Export'!C2:C,'Data Export'!B2:B=link)),1) )) )
公式拆解说明
1. 单条数据模式(E1=FALSE)
保留原有逻辑,仅修正B3:B为B2:B确保行对齐:
ARRAYFORMULA批量处理每行数据- 空行自动返回空值,非空行拼接固定文本、数据项、链接和类型,用
CHAR(10)实现换行
2. 分组模式(E1=TRUE)
核心用BYROW+UNIQUE+FILTER实现分组遍历:
UNIQUE(FILTER(B2:B,B2:B<>"")):提取Tickets!B列所有非空的唯一链接作为分组项BYROW(..., LAMBDA(link, ...)):逐个处理每个分组链接JOIN(CHAR(10),FILTER('Data Export'!A2:A,'Data Export'!B2:B=link)):筛选当前链接对应的所有数据项,用换行符拼接成列表INDEX(UNIQUE(FILTER('Data Export'!C2:C,'Data Export'!B2:B=link)),1):获取当前链接对应的唯一类型值(若同一链接有多种类型,可改为JOIN(", ", UNIQUE(...))拼接所有类型)
注意事项
- 确保
Data Export!B列与Tickets!B列的链接完全匹配(大小写、空格均需一致),否则筛选会失效 - 若
Data Export表中同一链接对应多种类型,可根据需求调整类型字段的拼接逻辑
内容的提问来源于stack exchange,提问作者Iskra Nacheva
相关产品推荐
相关产品推荐

