Google Sheets多工作表按分类高效汇总数据方案咨询
高效分类汇总解决方案
Google Sheets公式方案
方案1:QUERY+VSTACK批量整合汇总
- 核心思路:先将所有工作表的有效数据一次性堆叠成统一数据源,再按分类聚合计算,避免多表循环的性能损耗
- 公式示例(假设分类列是A,数值列是B,各表数据从第2行开始):
=QUERY(VSTACK(Sheet1!A2:B, Sheet2!A2:B, ..., Sheet24!A2:B), "SELECT Col1, SUM(Col2) WHERE Col1 IS NOT NULL GROUP BY Col1 LABEL Col1 '分类', SUM(Col2) '总计'") - 注意:如果工作表名称包含空格,需用单引号包裹,比如
'Q1 Sales'!A2:B
方案2:BYROW+SUMIFS逐分类计算
- 先在「总计」表A列提取所有唯一分类(用
=UNIQUE(VSTACK(Sheet1!A2:A, ..., Sheet24!A2:A))生成) - 在B2单元格输入以下公式,下拉自动计算所有分类的总计:
=BYROW(A2:A, LAMBDA(x, SUM(SUMIF(INDIRECT("'"&{"Sheet1","Sheet2",...,"Sheet24"}&"'!A:A"), x, INDIRECT("'"&{"Sheet1","Sheet2",...,"Sheet24"}&"'!B:B"))))) - 优势:无需合并数据源,直接针对每个分类跨表求和,适合需要保留分类单独查看的场景
Python处理思路
方式1:导出CSV后用Pandas汇总
- 操作步骤:
- 将24个工作表分别导出为CSV文件,存入同一文件夹
- 运行以下代码完成汇总:
import pandas as pd import os # 配置路径 input_folder = "./sheet_csvs" output_file = "./分类总计.csv" # 读取所有CSV并合并 df_list = [] for file in os.listdir(input_folder): if file.endswith(".csv"): df = pd.read_csv(os.path.join(input_folder, file)) df_list.append(df) combined_df = pd.concat(df_list, ignore_index=True) # 按分类列汇总数值列(替换为你的列名) summary = combined_df.groupby("分类")["数值"].sum().reset_index() # 保存结果 summary.to_csv(output_file, index=False, encoding="utf-8-sig")
方式2:直接调用Google Sheets API读取汇总
- 操作步骤:
- 在Google Cloud平台创建服务账号,下载密钥文件
- 安装依赖:
pip install gspread pandas - 运行代码:
import gspread import pandas as pd # 授权登录 gc = gspread.service_account(filename="service_account_key.json") # 打开目标表格(替换为你的表格名称) sheet = gc.open("业务数据汇总") # 读取所有工作表数据 df_list = [] for ws in sheet.worksheets(): # 跳过「总计」工作表 if ws.title == "总计": continue data = ws.get_all_records() df_list.append(pd.DataFrame(data)) # 合并并汇总 combined_df = pd.concat(df_list, ignore_index=True) summary = combined_df.groupby("分类")["数值"].sum().reset_index() # 将结果写入「总计」工作表 summary_ws = sheet.worksheet("总计") summary_ws.clear() # 写入表头和数据 summary_ws.update([summary.columns.tolist()] + summary.values.tolist())
内容的提问来源于stack exchange,提问作者Vít Repka
相关产品推荐
相关产品推荐

