本文目录导读:

- 使用 Microsoft Excel (最常用)
- 使用 WPS Office (国产办公软件)
- 使用 Python (适合编程用户、数据量大或逻辑复杂)
- 使用数据库 (如 SQL Server, MySQL)
- 总结:如何选择最适合你的方法?
合并多张表格数据是数据处理中非常常见的需求,根据你使用的工具不同(Excel、WPS、Python、数据库等),方法也有所不同。
以下针对最常见的几种场景,提供具体的操作步骤和核心原理。
使用 Microsoft Excel (最常用)
Excel 提供了几种合并方式,推荐按数据结构和需求选择:
方案 A:Power Query (首选,最强大、最灵活)
适用于:需要合并多个格式相同的表格(如每月销售报表),且希望一键刷新。
- 步骤:
- 准备数据: 将所有需要合并的表格放到同一个文件夹里,确保每张表格的完全一致(如“姓名”、“销售额”)。
- 获取数据: 点击 Excel 顶部菜单栏的 「数据」 -> 「获取数据」 -> 「来自文件」 -> 「从文件夹」。
- 选择文件夹: 浏览并选中存放表格的文件夹。
- 合并: 在预览窗口中,点击右下角的 「组合」 -> 「合并并加载」。
- 确认:
- Excel 会弹出一个窗口,让你选择用哪一张表作为“示例”,选中第一张表。
- 点击 「确定」。
- 结果: 所有表格的行数据会自动堆叠(纵向合并)到一个新工作表中。
- 优点: 未来如果文件夹里增加了新表格,只需右键结果表 -> 「刷新」,数据就会自动更新。
方案 B:使用 “合并计算” 功能
适用于:多张表格结构相同(行和列标题一致),且需要对数值进行求和、平均值等统计。
- 步骤:
- 新建一个工作表,选中结果区域左上角的单元格。
- 点击 「数据」 -> 「合并计算」。
- 函数: 选择你需要的计算方式(默认是“求和”)。
- 引用位置: 依次选中每张表格的数据区域(包括行标题和列标题),点击 「添加」 加入列表。
- 标签位置: 勾选 “首行” 和 “最左列”。
- 点击 「确定」,系统会根据行列标签自动合并并计算结果。
- 局限: 无法处理文本型数据和复杂的行列对应关系。
方案 C:使用 VBA 宏 (适合重复性极高的工作)
如果不想用 Power Query,也可以录制或编写简单的宏,但 Power Query 通常是更优解。
使用 WPS Office (国产办公软件)
WPS 的合并功能非常直观,甚至比 Excel 更简单。
- 步骤:
- 打开一个空白 WPS 表格文件。
- 点击顶部菜单栏左侧的 「WPS 数据」(或在“数据”菜单下找到)。
- 找到 「合并表格」 选项(通常在“数据工具”组里)。
- 选择 「合并多个工作表」 或 「合并多个工作簿」。
- 操作:
- 合并多个工作表: 把当前文件内不同 Sheet 的数据合并到一个 Sheet。
- 合并多个工作簿: 合并不同文件(如多个 .xlsx文件)的数据。
- 添加文件: 按照向导添加需要合并的文件,选择合并方式(按行或按列)。
- 点击 「开始合并」。
使用 Python (适合编程用户、数据量大或逻辑复杂)
当数据量巨大(如几万行以上)或合并逻辑复杂(如模糊匹配、多层合并)时,Python 的 Pandas 库是首选。
核心函数:pd.concat() (纵向合并) 和 pd.merge() (横向/按关键字段合并)
示例 1:纵向合并 (类似 Power Query)
import pandas as pd
import os
# 1. 假设所有Excel文件都在一个文件夹下
folder_path = "你的文件夹路径"
all_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]
df_list = []
# 2. 循环读取每个文件
for file in all_files:
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path)
df_list.append(df)
# 3. 纵向合并所有表格 (axis=0表示行方向)
merged_df = pd.concat(df_list, ignore_index=True)
# 4. 保存结果
merged_df.to_excel("合并结果.xlsx", index=False)
示例 2:横向合并 (类似 Excel 的 VLOOKUP,按关键字段匹配)
# 假设有订单表和用户详情表,按“用户ID”匹配
orders = pd.read_excel("订单数据.xlsx")
users = pd.read_excel("用户信息.xlsx")
# 合并:以 orders 的 User_ID 字段匹配 users 表的 ID 字段
result = pd.merge(orders, users, left_on="User_ID", right_on="ID", how="left")
# how='left' 表示保留订单表所有数据
result.to_excel("最终合并数据.xlsx", index=False)
使用数据库 (如 SQL Server, MySQL)
适用于企业级数据仓库、海量数据。
SQL 核心语句:UNION ALL (纵向合并) 和 JOIN (横向合并)
-
纵向合并: 如果多张表结构相同 (列数、列名一致)。
SELECT 列1, 列2 FROM 表1 UNION ALL SELECT 列1, 列2 FROM 表2 UNION ALL SELECT 列1, 列2 FROM 表3;
-
横向合并: 通过关键字段关联(如客户ID)。
SELECT A.*, B.订单金额 FROM 客户信息表 A LEFT JOIN 订单表 B ON A.客户ID = B.客户ID;
如何选择最适合你的方法?
| 场景 | 推荐工具 | 原因 |
|---|---|---|
| 一次性的、2-3张小表格 | Excel (复制粘贴) 或 WPS (合并表格) | 最快,无需学习复杂功能。 |
| 多张结构相同的表格,需定期更新 | Excel Power Query | 自动刷新,一劳永逸。 |
| 需要按某列进行匹配(VLOOKUP那种) | Excel Power Query (合并查询) 或 Python Pandas | 处理更灵活,且无行数限制。 |
| 数据量大,超百万行 | Python Pandas 或 数据库 (SQL) | Excel 处理大文件会卡死或崩溃。 |
| 不想装 Excel,只想用免费在线工具 | WPS (免费版通常够用) 或 Python | 纯粹免费,功能强大。 |
如果你能补充以下信息,我可以给出更精确的步骤:
- 你使用的是什么具体软件?(Excel 2007/2019/365? WPS? 或其他)
- 你的表格是纵向合并(一个表的数据堆在另一个表下面)还是横向合并(根据同一列(如学号、订单号)匹配后,把两列数据拼在一起)?
- 表格数量大约是多少张?(5张?50张?500张?)
- 数据量有多少行?(几百行?几万行?几十万行?)
标签: 表格合并