电子表格按唯一城镇分组取最大日期对应数值求和的实现方法
按城镇分组取最新日期对应数值求和实现方案
问题描述
我需要实现按唯一城镇分组,取每个城镇最新(最大)日期对应的Totals列数值求和,即筛选出每个唯一城镇对应最新日期的行后计算总计列的总和,相关样本数据如下:
| Date(日期) | Town(城镇) | Totals(总计) |
|---|---|---|
| 9月5日 | Loerie | 9 |
| 11月8日 | Loerie | 4 |
| 5月7日 | Flower | 2 |
| 2月2日 | Holo | 8 |
| 5月9日 | Holo | 7 |
| 7月23日 | Flower | 3 |
| 6月7日 | Dump | 1 |
| 3月3日 | Tzaneen | 9 |
| 9月2日 | Tzaneen | 4 |
| 4月3日 | Coffee | 7 |
我目前已经可以实现城镇列表去重排序,并通过公式=maxifs(C$2:C,B$2:B,F2,A$2:A,maxifs(A$2:A,B$2:B,F2))获取每个城镇对应最大日期的数值。现在我希望通过单个函数完成上述结果的排序与求和操作,暂不清楚是否可以通过Arrayformula实现。
解决方案
可以用谷歌表格的LAMBDA系函数实现单公式输出,无需辅助列:
方案1:仅输出最终总和
如果只需要得到最终的求和结果,直接用以下公式即可:
=SUM(BYROW(UNIQUE(B2:B),LAMBDA(t,MAXIFS(C2:C,B2:B,t,A2:A,MAXIFS(A2:A,B2:B,t)))))
按你给出的样本数据计算,最终结果为4+3+7+1+4+7=26。
方案2:同时输出排序后的明细+总和
如果需要同时得到排序后的唯一城镇列表、对应最新日期的Totals数值、最终求和结果,用以下单公式:
=LET( 排序去重城镇, SORT(UNIQUE(B2:B)), 对应最新数值, BYROW(排序去重城镇, LAMBDA(城镇, MAXIFS(C2:C,B2:B,城镇,A2:A,MAXIFS(A2:A,B2:B,城镇)))), 最终总和, SUM(对应最新数值), VSTACK( {"城镇","最新日期对应Totals"}, HSTACK(排序去重城镇,对应最新数值), {"总计",最终总和} ) )
公式会自动溢出所有结果,新增数据后也会自动更新计算结果,不需要手动下拉填充。
内容的提问来源于stack exchange,提问作者Morgol
相关产品推荐
相关产品推荐

