如何使用公式提取每个邮箱对应的最新表单回复?
表单重复提交记录提取方案(按邮箱取最新响应)
默认原始表单数据存储在A:C三列,列映射规则:
- A列:表单自动生成的提交时间戳(时间格式,数值越大提交时间越晚)
- B列:提交人邮箱
- C列:用户提交的回答内容
方案1:QUERY函数实现(推荐,大数据量下性能更好)
直接在空白单元格输入以下公式即可输出结果,自动保留原表头:
=QUERY( A:C, "SELECT A,B,C WHERE A MATCHES '"& TEXTJOIN("|",1,ARRAYFORMULA( QUERY(A:C,"SELECT MAX(A) WHERE B IS NOT NULL GROUP BY B LABEL MAX(A) ''") ))&"'", 1 )
逻辑说明:
- 内层QUERY按邮箱分组,计算每个邮箱对应的最新提交时间戳
- TEXTJOIN将所有最新时间戳拼接为正则匹配规则
- 外层QUERY筛选出时间戳匹配最新值的完整行,即为每个邮箱的最新提交记录
方案2:FILTER+SORT组合实现(逻辑直观,易自定义调整)
如果需要更灵活调整筛选规则,可以使用该方案,公式如下:
=ARRAYFORMULA( SORTN( SORT(FILTER(A:C,B:B<>""),1,FALSE), 9^9, 2, 2, TRUE ) )
逻辑说明:
- FILTER先过滤掉邮箱为空的无效提交
- SORT将所有有效记录按提交时间倒序排列,保证每个邮箱的最新记录排在同邮箱所有记录的最前位
- SORTN按邮箱列去重,仅保留每个邮箱第一次出现的记录,也就是最新提交的内容
特殊情况说明:如果存在同一邮箱在完全相同的秒级时间戳提交多条记录的场景,上述两个公式会保留该时间点下该邮箱的所有提交,可根据业务需求追加行号排序规则,取行号最大的记录即可。
内容的提问来源于stack exchange,提问作者idfurw
相关产品推荐
相关产品推荐

