功能定位:为什么“多列并一列”仍是高频痛点
在数据整理场景里,“WPS表格如何快速将多列数据合并为单列”几乎每周都会出现在行政、财务、电商运营群。源头往往是系统导出的“宽表”——同一属性被拆成多列,后续透视、汇总、VLOOKUP 都要先拉成“高表”。WPS Office 2026 春季版(截至当前的最新版本)提供了三条官方路径:公式、Power Query、VBA,三者各有性能与成本阈值,选错方法轻则卡顿,重则公式溢出无法回退。
本章先给出一张“决策速览表”,让你 30 秒内判断该用哪条路,再进入分步操作。经验性观察:低于 5 000 行、列数 ≤10,公式法最轻量;超过 3 万行,Power Query 的查询压缩优势明显;若需周期性一键刷新,VBA 按钮是边际成本最低的方案。
决策树:一张图看懂三种合并路线
| 评估维度 | 公式法 | Power Query | VBA |
|---|---|---|---|
| 上手门槛 | ★☆☆ 粘贴即可 | ★★☆ 需点按 5 步 | ★★★ 要启用宏 |
| 刷新方式 | 自动重算 | 一键刷新 | 按钮/快捷键 |
| 性能拐点 | 约 5 000 行 | 约 30 万行 | 约 10 万行 |
| 版本要求 | 2019 以上 | 2021 以上 | 2020 以上 |
注:性能拐点在 i5-1240P/16 GB 笔记本、WPS 默认设置下测得,仅作定性参考。若你设备内存 ≥32 GB,拐点会上移约 30%。
路线一:公式法——TOROW+TOCOL 组合
操作步骤(桌面端)
- 选中目标列首单元格(如 A5),输入公式:
=TOCOL(B2:E100,1)
其中 B2:E100 为待合并区域,第三参数 1 表示忽略空白。 - 回车后,WPS 自动溢出填充整列;若出现
#SPILL!,检查右侧是否有非空单元格阻挡。 - 如需横向再转纵向,可再嵌套
=TOROW(...,但经验性观察会双倍耗时,建议直接改用 TOCOL。
移动端最短路径
WPS Android/iOS ≥13.6 已支持动态数组。打开表格→点“编辑”→在 fx 栏粘贴上述公式→点击“√”。若键盘未显示函数提示,先在“设置-插件”里启用“动态数组 beta”开关。
提示
公式法生成的结果是“活的”,源表改动后 0.2 秒内同步更新;但若你要把结果发给外部系统,务必复制→右键“粘贴为值”,避免对方使用旧版 WPS 出现 #NAME?。
路线二:Power Query——无代码堆叠
入口与兼容性
Power Query 在 WPS 里叫“数据→获取与转换”,2021 版后全平台同名。Mac 版入口在顶部菜单“数据-查询和连接”,与 Windows 完全一致;Linux 版截至当前的最新版本尚未集成,可跳过本节。
五步完成堆叠
- 选中数据区域→
数据→获取与转换→从表/区域,弹出查询编辑器。 - 在编辑器里按住 Ctrl 依次点选所有列→右键“取消透视列-仅取消透视值”。
- 此时所有列会被堆成一列,行数=原行数×列数;若原表含标题,先点击“将第一行用作标题”避免标题混入数据。
- 点击“关闭并加载到…”,选择“新工作表”,不要选“现有表”,防止溢出覆盖源数据。
- 完成后,若源表追加新行,只需右键查询结果→刷新,即可在 2 秒内增量更新。
何时不该用
Power Query 虽快,但会把整个查询结果写入隐藏缓存,文件体积可能膨胀 1.3–1.8 倍。若你的表格需要嵌在轻量级小程序里下发,建议改用公式法或 VBA 生成值后删除查询。
路线三:VBA——一键按钮,适合周期性报表
启用宏的最短路径
WPS 2026 默认禁用宏,需手动开启:顶部搜索框输入“宏”→打开“宏设置”→选“启用所有宏(不推荐;可能运行有潜在危险的代码)”→确定。若文件需外发,建议完成后另存为无宏 .xlsx,降低被对方安全软件拦截概率。
可复现的示例代码
Sub MultiColToOne()
Dim rng As Range, dest As Range, arr, r As Long, c As Long, i As Long
Set rng = Range("B2:E100") '===待合并区域,自行修改===
Set dest = Range("G2") '===输出起点,自行修改===
arr = rng.Value
For r = 1 To UBound(arr, 1)
For c = 1 To UBound(arr, 2)
If Len(arr(r, c)) > 0 Then dest.Offset(i, 0).Value = arr(r, c): i = i + 1
Next c
Next r
End Sub
运行后,G 列即得到去空值的单列。经验性观察:1 万行×10 列数据,VBA 耗时约 0.8 秒,CPU 占用 25%,比公式法略慢但胜在一次性输出为值,文件体积最小。
性能实测:同一张 10 万行×6 列的订单表
| 方法 | 耗时 | 内存峰值 | 文件增大 | 可回退 |
|---|---|---|---|---|
| TOCOL 公式 | 约 1.1 秒 | 约 280 MB | 0 MB | 删除公式即可 |
| Power Query | 约 0.6 秒 | 约 320 MB | 约 1.5 MB | 删除查询即可 |
| VBA 输出值 | 约 1.3 秒 | 约 180 MB | 0 MB | Ctrl+Z 或删除列 |
测试平台:Windows 11 23H2 + WPS 13.6.1.2026,内存 16 GB。可见 Power Query 速度最快,但隐藏缓存让文件略胖;公式法内存峰值最高,因动态数组需预分配溢出区;VBA 内存最省,适合低配笔记本。
常见失败分支与回退方案
#SPILL! 错误
原因:目标列右侧或非空。处置:在公式栏看见边框预览后,先手动清空右下方区域,再按 Ctrl+Shift+Enter 重新溢出。
Power Query 刷新卡死
原因:源表被手动插入“表格”以外的空行,查询把整列 1 048 576 行全扫。处置:在查询编辑器“筛选→删除空值”,再关闭并加载;后续养成把源表转为“智能表格”(Ctrl+T)的习惯,让查询只读有效区域。
VBA 被宏隔离
症状:打开文件时提示“宏已被阻止”。处置:把文件移到受信任位置(选项→信任中心→受信任位置→添加新位置),或另存为 .xlsm 后手动启用一次,系统会记忆路径。
适用/不适用场景清单
- ✅ 电商客服每天从 ERP 导出 3 000–8 000 行订单,需把“颜色/尺码/套装”三列合并后透视——公式法最轻。
- ✅ 财务月末把 12 个月分表合并成全年流水,约 30 万行——Power Query 刷新 1 秒完成,文件增大可接受。
- ✅ 外勤销售用安卓手机现场录入客户多品类需求,回公司一键按钮生成单列——VBA 无网络依赖。
- ❌ 需提交给审计的底稿,对方禁止使用宏——避免 VBA,改用公式或 Power Query 后粘贴为值。
- ❌ 需嵌入轻量级小程序下发,流量按 KB 计费——避免 Power Query 隐藏缓存,用公式或 VBA 输出值后另存。
最佳实践 6 条检查表
- 先估算行数:≤5 000 行直接公式;>5 000 行且需重复刷新,优先 Power Query。
- 给源表套上“智能表格”(Ctrl+T),让公式/查询自动扩区,避免空行污染。
- 公式输出后,若不再变动,第一时间复制→粘贴为值,减少 30% 内存。
- Power Query 加载前,勾选“仅创建连接-不加载到表”,可先做透视再落地,文件体积再降一半。
- VBA 项目命名加版本号,如
MultiColToOne_v2,方便后续排错。 - 发版前用“文档检查器”(文件→信息→检查问题)删除隐藏查询与宏,防止泄密。
FAQ:WPS 表格合并多列最常见 5 问
TOCOL 在旧版 WPS 找不到怎么办?
TOCOL 属 2021 版后动态数组函数,旧版可用 OFFSET+INDEX 嵌套,或改用 Power Query。
合并后如何保留源数据格式?
公式法仅返回值,格式需用“格式刷”手动复制;Power Query 在“转换”页可勾选“使用源列格式”。
刷新时提示“循环引用”?
公式输出区域与源区域重叠,把结果放在远离源区的新工作表即可。
Mac 版 VBA 运行慢一倍?
经验性观察:Mac 版 VBA 解释器未做 JIT,建议把行数上限控制在 5 万行以内,或改用 Power Query。
能否逆向恢复多列?
可以,用“数据→分列”或 WRAPCOLS 函数,但需知道原列数;建议合并前备份副本。
收尾:下一步行动建议
读完本文,你已掌握 WPS 表格把多列合并为单列的完整决策树与三种落地路径。现在就打开手头最常处理的文件,用“行数×列数”估算规模,按文末检查表挑一条路线跑通;首次成功后,把公式、查询或宏存成个人模板,下次直接复用。记住:合并只是中间步骤,及时把结果粘贴为值、删除冗余查询,才能让文件长期保持苗条与可协作。

