跳至主要内容

如何在 Excel 中快速将多列堆叠到一列?

Author: Sun Last Modified: 2025-07-31

在 Excel 中, 文本转列 功能旨在使用指定的分隔符将单列中的数据拆分为多列。然而,如果你需要进行相反的操作——将多列的值合并或堆叠到一个单列中(如下例所示),该怎么办呢?这种场景在整合数据集、准备分析信息或将报告格式化以供进一步处理时经常出现。遗憾的是,Excel 并没有直接垂直堆叠列的内置函数,但你可以使用几种实用的解决方案来高效完成此任务。
stack columns to one

使用公式将多列堆叠为一列

使用 VBA 将多列堆叠为一列

使用转换区域将多列堆叠为一列 good idea3

使用 Power Query 将多列堆叠为一列


使用公式将多列堆叠为一列

如果你不想使用宏或插件,可以使用基于 INDEX 函数的数组公式将多列堆叠到一列中。这种方法适用于动态数据集或希望避免手动操作的情况。其中一个优点是,如果源数据发生变化,公式会自动更新结果,但你需要精确设置范围名称,并避免在引用范围内插入或删除单元格。

1. 选择要堆叠的数据范围(例如 A1:C4),然后点击 名称框 (位于公式栏左侧),输入有意义的名称,如 MyData,并按 Enter键。这将为你的范围命名以便于引用。
define a range name for the data range

2. 点击你希望单列堆叠开始的空白单元格——通常是在数据下方或另一张工作表中。将以下公式粘贴到选定的单元格中:

=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)

3. 按 Enter 确认,然后向下拖动填充柄,直到看到 #REF! 或类似的错误提示,表示所有数据都已列出。如有需要,删除错误的单元格。
enter a formula to get the result

在此公式中,MyData 指代你在步骤 1 中定义的范围。COLUMNS(MyData) 会根据你的数据列数自动调整。确保在输入公式后不要在 MyData 范围内插入或删除列,因为这会影响结果。如果数据中包含空白单元格,这些空白也会被堆叠——如有必要,之后可以将其过滤掉。对于大范围的数据,拖动填充柄可能需要一些时间;如果左侧列有连续数据,考虑双击填充柄。

如果你的 Excel 版本支持动态数组(Excel 365 或 Excel 2021 及更高版本),可以尝试:

=TOCOL(MyData,1)

此公式仅在较新版本的 Excel 中可用,并且能够立即将多列堆叠到一列中。


使用 VBA 将多列堆叠为一列

如果你需要频繁堆叠列或希望获得更大的控制权,VBA 宏可以在几次点击内自动化这一过程。VBA 非常适合高级用户处理大型数据集或重复性任务。但是需要注意,启用宏可能会带来安全风险,尤其是当你不确定宏来源时。运行前务必保存文件,并谨慎运行不熟悉的代码。

1. 按 Alt + F11 打开 Microsoft Visual Basic for Applications 窗口。

2. 在 VBA 窗口中,点击 插入 > 模块。将以下代码复制并粘贴到新模块中:

VBA:堆叠列至一列

Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
    Rng.Copy
    Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

insert the vba code into the module

3. 要运行宏,请按 F5 键,或点击“运行”按钮。运行后会出现一个提示——选择要堆叠的数据范围并点击 确定

4. 接下来系统会提示你选择结果的目标单元格。点击 确定 即可。列将从目标单元格开始堆叠到一列中。
vba code to select the data range
vba code to select a cell to output the result

如果遇到错误,请仔细检查所选范围,并确保没有受保护的工作表或合并单元格。如需更高级的自定义(例如跳过空白单元格或仅堆叠某些列),可以进一步修改代码。运行 VBA 代码前请务必备份工作以防意外数据丢失。


使用转换区域将多列堆叠为一列

如果你偏好无需编写公式或代码的快速且用户友好的解决方案,可以使用 Kutools for Excel转换区域功能。此工具特别适合希望通过直观界面快速处理数据的用户,例如办公室管理员或那些例行处理多维数据的人员。使用 Kutools 能最大限度减少公式错误的风险,并节省大量时间,尽管它需要安装插件。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

免费安装 Kutools for Excel 后,按照以下步骤操作:

1. 选择要堆叠到一列的列或数据范围。然后点击 Kutools > 区域 > 转换区域 打开对话框。
click Transform Range feature of kutools

2. 在 转换区域 对话框中,选择 区域转单列 选项,并点击 确定。接下来,选择一个希望结果显示的单元格。
check Range to single column option and select a cell to put the result

3. 最后,点击 确定。所选列将立即堆叠到你选择位置的一列中。
 the columns have been stacked into one single column by kutools

此方法简单直接且无错误。如果结果不对,可以轻松撤销更改(Ctrl + Z),或者根据需要重新运行转换区域以处理不同的数据集。如果数据中包含合并单元格,最好在使用此功能之前取消合并,以避免意外结果。


使用 Power Query 将多列堆叠为一列

Power Query(在某些 Excel 版本中也称为获取和转换)是另一种将多列堆叠为一列的实用方法,特别是对于处理大量数据或需要自动化重复数据转换任务的用户。Power Query 内置于 Excel 2016 及更高版本中,并且作为 Excel 2010 和 2013 的免费插件提供。它在高级数据准备方面最有用,并能通过简单的用户界面轻松处理复杂的重塑操作。然而,初次使用者可能需要一点学习时间。

将源表加载到 Power Query 中。在 Excel 中选择你的数据。前往 数据 > 从表格/区域 打开 Power Query 编辑器。

2. 在查询预览中选择所有列。前往转换选项卡,在表格组中找到并点击转置。这会翻转行和列。

3. 再次选择所有转置后的列。在转换选项卡下,任意列组中点击取消透视列

4. 如果不需要“属性”列,可以右键点击“属性”列标题 > 选择删除。

5. 点击关闭并加载,将结果作为新的工作表或表格发送到 Excel。任何时候,如果源数据发生变化,都可以刷新或重新应用转换。

Power Query 允许你将此堆叠过程保存为可重复使用的查询,并在将来数据发生变化时快速更新结果。

注意:这种方法可能不会保留源数据中的原始列标题信息。

总之,每种方法都有其优势:公式适合动态更新数据,VBA 适合自动化重复任务,Kutools for Excel 提供了几乎无需技术知识的点击式操作,而 Power Query 则非常适合高级或重复的转换需求。处理后始终检查堆叠数据是否存在剩余的空白、合并单元格或格式错误。如果出现错误或意外结果,请仔细检查定义的范围或步骤选择。结合使用这些方法将帮助你高效管理和转换 Excel 数据,满足报告和分析需求。


最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!