Google Sheets:跨表提取指定日期且去重连续重复行的多列数据
解决方法
1. 动态关联日期的基础公式
先修改QUERY公式,实现动态引用Stats表B16单元格的日期,同时在Stats表中直接调用Calendar表的数据:
=QUERY(Calendar!A:K,"select H,I,J,K where F = date '"&TEXT(B16,"yyyy-mm-dd")&"'")
- 核心逻辑:用
TEXT(B16,"yyyy-mm-dd")将B16的日期转换为QUERY要求的yyyy-mm-dd格式字符串,再通过字符串拼接嵌入到QUERY语句中,替代原有的固定日期值。
2. 过滤连续重复的I/J/K行记录
在此基础上添加过滤逻辑,仅保留I、J、K列与上一行内容不完全相同的记录,用LET函数封装中间步骤提升可读性:
=LET( filtered_data, QUERY(Calendar!A:K,"select H,I,J,K where F = date '"&TEXT(B16,"yyyy-mm-dd")&"'"), ijk_cols, INDEX(filtered_data,,2):INDEX(filtered_data,,4), keep_row, BYROW(SEQUENCE(ROWS(filtered_data)), LAMBDA(row_num, IF(row_num=1, TRUE, NOT(EXACT(TEXTJOIN("|",TRUE,INDEX(ijk_cols,row_num,)), TEXTJOIN("|",TRUE,INDEX(ijk_cols,row_num-1,)))) )), FILTER(filtered_data, keep_row) )
- 步骤说明:
filtered_data:先获取符合目标日期的H、I、J、K列数据ijk_cols:提取结果中的I、J、K列(对应filtered_data的第2到4列)keep_row:生成过滤判断列,第一行默认保留;从第二行开始,通过TEXTJOIN将I/J/K列内容拼接成字符串,用EXACT精确比较当前行与上一行的拼接结果,仅保留内容不同的行- 最后用
FILTER返回符合条件的记录
内容的提问来源于stack exchange,提问作者user21127698
相关产品推荐
相关产品推荐

