如何在Google Sheets Query中按多列分组并获取对应最新日期的数值列?
解决Google Sheets分组后关联对应列的问题
问题说明
现有数据:
| Date(A) | Color(B) | Type(C) | Number(D) |
|---|---|---|---|
| 1/1/25 | White | Horse | 12 |
| 2/1/25 | White | Horse | 55 |
| 1/1/25 | Blue | Horse | 76 |
| 1/2/25 | Blue | Dog | 31 |
需要按Color(B)和Type(C)分组,保留每组中最新日期对应的完整行(包含Number(D)列),期望输出:
| Date(A) | Color(B) | Type(C) | Number(D) |
|---|---|---|---|
| 2/1/25 | White | Horse | 55 |
| 1/1/25 | Blue | Horse | 76 |
| 1/2/25 | Blue | Dog | 31 |
原Query语句仅能获取分组后的最大日期和B、C列,无法关联对应D列,以下是两种可行解决方案:
方案1:使用FILTER+MAXIFS
直接筛选出每个分组中日期等于该组最大日期的行:
=FILTER(A:D, A:A=MAXIFS(A:A, B:B, B:B, C:C, C:C))
原理
MAXIFS(A:A, B:B, B:B, C:C, C:C):为每行计算其所在Color(B)-Type(C)分组的最大日期FILTER(A:D, ...):筛选出Date(A)等于对应分组最大日期的完整行
方案2:使用QUERY+虚拟列
先为原数据添加「分组最大日期」虚拟列,再筛选匹配的行:
=QUERY( {A:D, ARRAYFORMULA(MAXIFS(A:A, B:B, B:B, C:C, C:C))}, "select Col1, Col2, Col3, Col4 where Col1=Col5 and Col3 is not null", 1 )
原理
{A:D, ARRAYFORMULA(...)}:将原数据与每个分组的最大日期合并为新数组(第5列为虚拟列)- Query语句筛选
Date(A)(Col1)等于分组最大日期(Col5)的行,同时排除Type(C)为空的记录
内容的提问来源于stack exchange,提问作者user30812313
相关产品推荐
相关产品推荐

