Google Sheets月度国家数据分桶汇总问题(QUERY函数求解)
在Google Sheets中实现国家数据分组汇总的方案
完全可以在Google Sheets中实现你的需求,核心思路是将数据拆分为三个部分分别处理后合并排序:欧盟国家汇总、指定保留国家数据、其余国家汇总,以下是具体实现步骤和函数:
准备工作
- 在表格的空白区域(比如
E2:E30)列出所有欧盟国家的完整名称,确保和原始数据中的国家名称完全匹配(比如示例中的Sweden、Malta都属于欧盟)。 - 确定需要单独保留的国家列表,比如示例中的
Republic of Korea、Lebanon。
分步实现
1. 汇总欧盟国家(EU)的月度数据
使用QUERY函数识别欧盟国家并按月份求和:
=QUERY({A2:C, IF(COUNTIF($E$2:$E$30, B2:B), "EU", "")}, "SELECT Col1, 'EU', SUM(Col3) WHERE Col4 = 'EU' GROUP BY Col1 LABEL 'EU' 'Country', SUM(Col3) 'Percentage'", 0)
- 逻辑:通过辅助列标记欧盟国家,再按月份分组求和,重命名列标题。
2. 提取指定保留的国家数据
使用FILTER和MATCH筛选出需要单独显示的国家:
=FILTER(A2:C, ISNUMBER(MATCH(B2:B, {"Republic of Korea", "Lebanon"}, 0)))
- 逻辑:匹配指定国家列表,直接提取对应行的数据,保留原始的月度和百分比。
3. 汇总“Rest of World”的月度数据
筛选出既不属于欧盟、也不在指定保留列表中的国家,按月份求和(同时排除百分比为0的行,对应示例中的South Africa数据):
=QUERY({A2:C, IF(COUNTIF($E$2:$E$30, B2:B)+ISNUMBER(MATCH(B2:B, {"Republic of Korea", "Lebanon"}, 0))=0, "Rest of World", "")}, "SELECT Col1, 'Rest of World', SUM(Col3) WHERE Col4 = 'Rest of World' AND Col3 > 0 GROUP BY Col1 LABEL 'Rest of World' 'Country', SUM(Col3) 'Percentage'", 0)
- 逻辑:通过辅助列标记符合条件的国家,按月份求和并排除0值,重命名列标题。
4. 合并并排序所有数据
将上述三部分结果合并,按月份升序、国家名称排序:
=SORT({ QUERY({A2:C, IF(COUNTIF($E$2:$E$30, B2:B), "EU", "")}, "SELECT Col1, 'EU', SUM(Col3) WHERE Col4 = 'EU' GROUP BY Col1 LABEL 'EU' 'Country', SUM(Col3) 'Percentage'", 0), FILTER(A2:C, ISNUMBER(MATCH(B2:B, {"Republic of Korea", "Lebanon"}, 0))), QUERY({A2:C, IF(COUNTIF($E$2:$E$30, B2:B)+ISNUMBER(MATCH(B2:B, {"Republic of Korea", "Lebanon"}, 0))=0, "Rest of World", "")}, "SELECT Col1, 'Rest of World', SUM(Col3) WHERE Col4 = 'Rest of World' AND Col3 > 0 GROUP BY Col1 LABEL 'Rest of World' 'Country', SUM(Col3) 'Percentage'", 0) }, 1, TRUE, 2, TRUE)
- 逻辑:用数组符号
{}合并三个数据集,SORT函数按第1列(Month)升序、第2列(Country)排序,确保结果和示例一致。
注意事项
- 欧盟国家列表需保持准确,若有新增/移除国家,直接更新
E2:E30范围即可。 - 指定保留国家可修改
{"Republic of Korea", "Lebanon"}中的内容,支持添加多个国家。 - 若不需要排除百分比为0的行,可删除第三部分QUERY中的
AND Col3 > 0条件。
内容的提问来源于stack exchange,提问作者user20186838
相关产品推荐
相关产品推荐

