跳至主要内容

如何在 Excel 中复制多个选定区域或范围?

Author: Xiaoyang Last Modified: 2025-07-31

在日常的 Excel 工作中,通常需要处理分布在大型工作表中的不同部分的数据,而不是连续的块。例如,您可能希望复制特定表格、列或非相邻单元格,并将它们一次性全部转移到另一个工作表中。然而,当您选择几个不连续的范围并尝试一起复制它们时,Excel 会显示一个警告:“该命令不能用于多个选定区域。” 这可能会令人沮丧,并且如果使用默认的 Excel 功能,会使分发或编译单独的数据片段变得麻烦。那么,有哪些有效的方法可以快速复制多个选定的范围呢?本指南将介绍几种实用的解决方案,分析每种方法的价值、适用场景以及需要注意的事项,以帮助您更高效地处理这些常见的电子表格需求。


使用剪贴板复制多个选定范围

Excel 内置的剪贴板经常被忽视,但它允许您在整个工作表中聚合多个内容片段。通过剪贴板窗格,您可以逐一复制不同位置的内容,收集它们,然后将所有内容一次性粘贴到目标工作表上的选定区域。此变通方法最适合需要收集视觉内容、形状或较小选择的情况,但请记住,Excel 将这些视为单独的复制操作——因此在粘贴时格式和结构可能并不总是保持一致。以下是详细的步骤和需要记住的重要点:

1. 点击 开始 > a screenshot of the launch icon in the Clipboard group剪贴板 组中显示 剪贴板 窗格。(这通常位于 Excel 功能区剪贴板组的右下角。)参见截图:
a screenshot showing how to open the Clipboard pane in Exel

2. 逐个复制每个所需的范围。每次复制后,所选内容将作为唯一的项目出现在左侧的剪贴板窗格中。对所有要合并的范围重复此过程。您可以查看剪贴板列表以确保捕获了所有需要的范围,并在粘贴前删除任何意外的副本。

3. 转到工作表并选择要在其中聚集复制范围的目标单元格。在剪贴板窗格中,点击“全部粘贴”以一次性粘贴所有已收集的项目。

通过剪贴板粘贴将默认垂直堆叠内容;因此,如果数据需要按特定结构对齐,则可能需要调整粘贴结果,特别是对于表格或列表。此外,剪贴板最多保留 24 个项目——如果您超过这个数量,最早的项目将被替换。始终检查您的粘贴区域是否清晰,以免无意中覆盖重要数据。

轻松将来自多个工作表/工作簿的多个选择合并到单个工作表/工作簿中

如果您需要从多个工作表或工作簿中收集或合并内容,在工作簿之间重复手动复制粘贴既繁琐又容易出错,而且非常耗时——尤其是对于大规模的数据汇总。借助 Kutools for Excel 的 合并(工作表和工作簿) 工具,您可以高效地将多个工作表和工作簿集成到一个目标位置,最大限度减少人工操作并在整个过程中保持数据结构。这非常适合月度报告、跨部门的数据汇总或整合历史数据。


a screenshot of easily ombine multiple selections from many worksheets/workbooks into single worksheet/workbook with Kutools for Excel

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取

使用 VBA 代码复制多个选定范围

如果您的工作流程经常涉及复制多个分离的范围,通过 VBA(Visual Basic for Applications)自动化该过程可以节省大量时间并减少人为错误。此解决方案最适合高级用户或需要重复、结构化任务的情况——例如每周复制相同的区域或为报告重新格式化数据。这种方法提供了更大的灵活性,但需要仔细的逐步操作和注意粘贴位置,以避免意外覆盖数据。

1. 按住 Ctrl 键,使用鼠标选择每一个非相邻的范围。

2. 同时按下 Alt + F11 打开 Microsoft Visual Basic for Applications (VBA) 编辑器窗口,然后点击 插入 > 模块。将以下代码直接粘贴到模块窗口中:

Option Explicit
Sub CopyMultipleSelection()
Dim SelAreas() As Range
Dim PasteRange As Range
Dim UpperLeft As Range
Dim NumAreas As Integer, i As Integer
Dim TopRow As Long, LeftCol As Integer
Dim RowOffset As Long, ColOffset As Integer
Dim NonEmptyCellCount As Integer
' Exit if a range is not selected
If TypeName(Selection) < > "Range" Then
MsgBox "Select the range to be copied. A multiple selection is allowed."
Exit Sub
End If
' Store the areas as separate Range objects
NumAreas = Selection.Areas.Count
ReDim SelAreas(1 To NumAreas)
For i = 1 To NumAreas
Set SelAreas(i) = Selection.Areas(i)
Next
' Determine the upper left cell in the multiple selection
TopRow = ActiveSheet.Rows.Count
LeftCol = ActiveSheet.Columns.Count
For i = 1 To NumAreas
If SelAreas(i).Row < TopRow Then TopRow = SelAreas(i).Row
If SelAreas(i).Column < LeftCol Then LeftCol = SelAreas(i).Column
Next
Set UpperLeft = Cells(TopRow, LeftCol)
' Get the paste address
On Error Resume Next
Set PasteRange = Application.InputBox _
(Prompt:="Specify the upper left cell for the paste range:", _
Title:="Copy Mutliple Selection", _
Type:=8)
On Error GoTo 0
' Exit if canceled
If TypeName(PasteRange) < > "Range" Then Exit Sub
' Make sure only the upper left cell is used
Set PasteRange = PasteRange.Range("A1")
' Check paste range for existing data
NonEmptyCellCount = 0
For i = 1 To NumAreas
RowOffset = SelAreas(i).Row - TopRow
ColOffset = SelAreas(i).Column - LeftCol
NonEmptyCellCount = NonEmptyCellCount + _
Application.CountA(Range(PasteRange.Offset(RowOffset, ColOffset), _
PasteRange.Offset(RowOffset + SelAreas(i).Rows.Count - 1, _
ColOffset + SelAreas(i).Columns.Count - 1)))
Next i
' If paste range is not empty, warn user
If NonEmptyCellCount < > 0 Then _
If MsgBox("Overwrite existing data?", vbQuestion + vbYesNo, _
"Copy Multiple Selection") < > vbYes Then Exit Sub
' Copy and paste each area
For i = 1 To NumAreas
RowOffset = SelAreas(i).Row - TopRow
ColOffset = SelAreas(i).Column - LeftCol
SelAreas(i).Copy PasteRange.Offset(RowOffset, ColOffset)
Next i
End Sub

3. 在 VBA 窗口中,点击运行按钮(或按 F5)执行代码。

4. 将出现一个输入框提示您指定要粘贴合并范围的左上角单元格。点击 确定 确认后。
a screenshot of selecting a destination cell to place the copied ranges

注意事项和故障排除:此 VBA 代码从指定目的地的左上角开始排列复制的选择。请注意潜在的数据覆盖——如果目标区域不是空的,将显示警告。如果遇到任何“下标越界”或其他错误消息,请检查您的选择是否完全由单元格范围组成。此方法不支持复制非单元格项,如形状或图表,并且只会复制值和单元格格式,而不是对象。


快速从一个工作表中复制多个选定范围

Kutools for Excel 提供了一个更高效的解决方案,即其多区域复制工具:它可以让您在一个工作表中选择所有需要的范围,然后一步完成复制。在一个简单易用的界面中,您可以精确选择应如何粘贴复制的内容——无论是粘贴所有内容、仅公式、仅值、仅格式等。您还可以选择保留行高和列宽,节省时间并确保格式一致性。

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取

1. 通过按住 Ctrl 键逐一选择范围——然后转到 Kutools > 多区域复制。参见截图:
a screenshot of enabling and configuring the Copy Multiple Ranges feature of Kutools for Excel

2. 在复制多个范围对话框中,从选择性粘贴选项中选择“全部”,然后点击确定进行确认。您可以在此处进一步自定义粘贴设置——例如仅包括值或所有格式。

注意:为了保留所有范围的原始行高和列宽,请在点击确定之前勾选包含行高包含列宽选项。这对于结构外观至关重要的情况很有用,例如创建模板或整洁的报告。

3. 在出现的目标选择框中,指定目标粘贴范围的左上角单元格,然后点击 确定.
a screenshot of selecting a destination cell

所有选定范围将连续粘贴到目标位置,如果需要,将保留原始尺寸。此方法快速,避免了手动复制粘贴的重复操作,并提供了根据您的工作流定制粘贴结果的灵活性。

点击这里了解更多关于复制多个范围工具的信息       

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取


从许多工作表/工作簿中复制多个范围

从众多工作表或不同工作簿中汇总数据是常用的需求,用于制作汇总报告或数据分析。手动做这项工作既耗时又容易出错,尤其是处理大文件时。Kutools for Excel 提供了一个合并工作表工具,使得从多个工作表甚至工作簿中复制指定范围变得简单且有指导性。此工具非常适合月度汇总、合并调查结果、发票数据以及其他数据分散在多个来源的任务。

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取

1. 首先点击 Excel 功能区中的 Kutools Plus > 合并

2. 在合并工作表 – 第 1 步,共 3 步对话框中,选择 将多个工作簿中的工作表合并到一个工作表中 并点击 下一步.
a screenshot of choosing the Combine multiple worksheets from workbook into one worksheet option in the Combine Worksheets wizard

3。在第 2 步,共 3 步中,执行以下操作:
a screenshot of selecting a workbook and the ranges in different worksheets you will copy
  (1) 在 工作簿列表中,选择工作簿,然后点击每个工作表后的 a screenshot of the selection button 浏览 按钮,以选择确切的范围。
  (2) 要包括更多工作簿,点击 添加,然后重复 (1) 来指定额外文件中的范围。
  (3) 点击 完成 确认所有选择后。

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取

4. 将出现一个提示,询问您是否要将设置保存为场景以备将来使用。点击“”保存或“”继续而不保存。

完成后,所有来自不同工作表或工作簿的指定范围将自动收集并放置在一个新工作表或工作簿中,无需重复手动复制粘贴。这保留了您的数据结构,并大大加速了分布式信息的编译。


使用 Excel 公式复制和汇总多个范围

对于希望将非连续范围的内容聚合到单个列表或摘要中而无需使用 VBA 或剪贴板的用户来说,Excel 公式非常有用。这特别适用于处理结构化数据集的情况,例如将多个列或列表的所有数据收集到一个摘要区域。这是一个实用的例子,使用以下公式:

1. 假设您想将 A1:A5C1:C5 范围内的数据组合到 E1 开始的单列中。在 E1 中输入以下公式:

=VSTACK(A1:A5, C1:C5)

2. 按 Enter 确认。两个范围中的所有值都将出现在 E1 及其下方。如果您需要将几个非相邻范围的所有数据安排到其他地方的摘要范围中,只需修改 VSTACK 中的范围即可。

注意事项:
  • VSTACK 函数仅适用于 Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web。
  • 如果您的 Excel 版本不支持 VSTACK,您可以使用以下公式来复制范围。以下是一个合并示例 A1:A5C1:C5E1:E10:
    =IF(ROW(A1)<=5,INDEX(A$1:A$5,ROW(A1)),INDEX(C$1:C$5,ROW(A1)-5))
    E1 单元格中输入此公式并按 Enter,然后将其向下拖动至 E10。这将把 A1:A5 的前 5 个值和 C1:C5 的后 5 个值放在一列中。根据源数据调整范围大小和引用。

注意事项:这些公式非常适合静态数据摘要,但不会保留源范围的格式、公式、图表或合并单元格。它们最适合用于汇总列表或简单表格。如果遇到 #REF! 等错误,请仔细检查范围边界。

在处理多个范围时,始终仔细检查您的选择,并考虑在执行批量操作之前创建备份——尤其是在繁忙的工作簿中运行 VBA 脚本或使用插件时。如果遇到意外的粘贴结果,请检查源格式和目标区域的结构。Kutools for Excel 旨在简化这些过程,提供稳定的工具来高效处理它们。选择最适合您场景的方法:偶尔使用时,剪贴板或 Excel 公式可能足够;对于频繁或大规模任务,利用 VBA 或 Kutools 工具可提供最大的便利性和准确性。


演示:从一个工作表中复制多个选定范围

 

演示:从多个工作簿/工作表中复制多个选定范围

 

Kutools for Excel:超过 300 种实用工具触手可及!永久免费享受 AI 功能!立即下载!

最佳 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%,每天帮你减少上百次鼠标点击!