具有此Google表格QUERY公式:
=QUERY(FORMULARIO!A4:Q, " select G,E,K,M,N,L,O,Q where not upper(J) = 'PAGÓ' and A > date '"&TEXTO(HOY()-3, "yyyy-mm-dd")&"' and E is not null and O is not null and Q contains '@' and not Q matches '"&TEXTJOIN("|", 1, QUERY(FORMULARIO!J4:Q, "select Q where upper(J) = 'PAGÓ' ", 0))&"'", 0)
如何仅退回每封电子邮件(Q列)的一条记录,即最近的A列查看日期的记录?
测试表:
[选项卡下的“结果”是有效的查询,在该查询中,我仅需要根据新近度过滤出重复项,仅保留最新的重复项,并且唯一标识符为电子邮件
(遵循OP的共享演示页)
使用的公式为:
=SORT(SORTN(QUERY(FORMULARIO!A4:Q, " select G,E,K,M,N,L,O,Q where not upper(J) = 'PAGÓ' and A > datetime '"&TEXTO(AHORA()-3, "yyyy-mm-dd HH:mm:ss")&"' and E is not null and O is not null and Q contains '@' and not Q matches '"&TEXTJOIN("|", 1, QUERY(FORMULARIO!J4:Q, "select Q where upper(J) = 'PAGÓ' ", 0))&"'", 1),9^9,2,2,1),1,1)
更改之处:
SORTN
函数包装了您的原始查询,以查找和排除Q
列中所有重复的电子邮件,但基于A
列中基于时间戳的最新电子邮件除外。 SORT
函数包装结果,以使最终结果按时间戳排序。专业提示通过更改以下内容,在主查询中也做了额外更改
and A > date '"&TEXT(HOY()-3, "yyyy-mm-dd")&"'
toand A > datetime '"&TEXT(AHORA()-3, "yyyy-mm-dd HH:mm:ss")&"'
因此,我们将TODAY
更改为NOW
。通过执行此操作,我们使用时间戳中存在的日期和时间而不是仅使用日期来计数日期。
(仍有一些小的改进/变更的余地,但超出了此问题的范围。
原始答案
理所当然地认为您的公式可以按预期工作((如果没有测试表,则无法对其进行检查),但是会产生多行,您可以在公式末尾使用limit
子句。
limit