如何将Excel工作表分割成多个工作表(3种方法)------译者注

  • Share This
Hugh West

一个大型数据集可能包含基于同一列的多个值。 如果你想,你可以将相同类别(部门、月份、地区、州等)的值或你的喜好分割到不同的工作表或工作簿中。 在这篇文章中,我将解释,如何将Excel表分割成多个工作表。

为了让你更清楚地了解这个解释,我将使用一个样本数据集。 数据集中有4列,代表不同月份的销售信息。 这些列是 销售人员,地区,月份。 销售 .

下载到实践中

将Excel工作表分割成多个工作表.xlsm

将Excel工作表分割成多个工作表的方法

1.使用过滤和复制

在任何工作表中,你可以通过使用以下方法将数据分割到多个工作表中 过滤器 .

首先,选择你要应用的单元格区域 过滤器 .

在这里,我选择了单元格范围 B3:E15 .

然后,打开 数据 标签>> 选择 过滤器 .

你也可以使用 ctrl + shift + l 申请 过滤器 使用键盘 .

现在。 过滤器 被应用于选定的单元格范围。

接下来,点击 月份 列,因为我想根据以下因素分割数据 月份 价值。

从那里我 未选择 所有的一切,除了 一月 .最后,点击 认可 .

现在,所有的值在 月份 一月 被过滤掉。

然后。 拷贝 数据和 粘贴 它进入新的工作表。

在这里,我把新的工作表命名为 1月。 因此,你将看到以下所有的销售信息 一月 在此提出。

对于其余的 几个月 ,你可以按照同样的程序。

再次,点击 月份 列,因为我想根据以下因素分割数据 月份 价值。

从那里 取消选择 所有的一切,除了 2月 .最后,点击 认可 .

现在,所有的值为 2月 月份 被过滤掉。

然后。 拷贝 数据和 粘贴 它进入新的工作表。

后来,我把这个新工作表命名为 2月。 因此,你将看到所有的销售信息,包括 月份 2月 在此提出。

再次,点击 月份 列,因为我想根据以下因素分割数据 月份 价值。

从那里 取消选择 所有的一切,除了 三月 .最后,点击 认可 .

现在,你将看到所有的值 三月 被过滤掉。

然后。 拷贝 数据和 粘贴 它进入新的工作表。

最后,我将新的工作表命名为 三月 因此,你将看到以下所有的销售信息 三月 在此提出。

阅读更多。 根据行数将Excel工作表分割成多个表

2.使用VBA根据行数分割Excel工作表

在开始执行该程序之前,你需要记住,你必须从第一行开始数据。

现在,打开 开发商 标签>> 选择 视觉基础

它将打开一个新的窗口 微软Visual Basic应用程序 .

现在,从 插入 >> 选择 模块

A 模块 将在那里开放。

然后,在以下代码中写上 模块 .

 Sub SplitExcelSheet_into_MultipleSheets() Dim WorkRng As Range Dim xRow As Range Dim SplitRow As Integer Dim xWs As Worksheet On Error Resume Next EcelTitleId = "Split Row Numt" Set WorkRng = Application.Selection Set WorkRng= Application.InputBox("Range", ExcelTitleId, WorkRng.Address, Type:=8) SplitRow = Application.InputBox("Split Row Num", ExcelTitleId, 4, Type:=1) Set xWs=WorkRng.ParentSet xRow = WorkRng.Rows(1) Application.ScreenUpdating = False For i = 1 To WorkRng.Rows.Count Step SplitRow resizeCount = SplitRow If (WorkRng.Rows.Count - xRow.Row + 1) <SplitRow Then resizeCount = WorkRng.Rows.Count - xRow.Row + 1 xRow.Resize(resizeCount).Copy Application.Worksheets.Add after:=Application.Worksheets(Application.Worksheets.Count)Application.ActiveSheet.Range("A1").PasteSpecial Set xRow = xRow.Offset(SplitRow) Next Application.CutCopyMode = False Application.ScreenUpdating = True End Sub 

在这里,我创建了一个子程序,名为 SplitExcelSheet_into_MultipleSheet .

我在这里声明了几个变量,这些变量是 工作时间 xRow 作为 范围 类型,然后

分割行 作为 整数 还有 xWs 作为 工作表 类型。

此外,使用过的 职称名称 以给 对话框 标题。

我已经提供了分裂的行号 4 将数据分成4行,因为在我的数据集中 月份 一月 有4行。

最后,用了一个 对于 循环到 分割行 直到给定的单元格范围结束。

然后。 拯救 代码,然后回到工作表。

现在,打开 开发商 标签>> 来自 插入 >> 选择 钮扣

A 对话框 将会弹出。

要分配给 宏观 在插入的 钮扣 .

选择 将Excel表格分割成多张表格 巨集名称 然后点击 认可 .

只需点击 钮扣 来运行 宏观 .

现在,一个 对话框 将会弹出,你可以把数据 范围。

在这里,我选择了单元格范围 B1:E12

然后,点击 认可 .

另一个 对话框 将会弹出,显示你在分割数据集的代码中已经提供的选定行数。

➤ 在代码中,我提供了 4 作为 分割行数

因为我总共有 12 行,所以与 4行 将会有 3张 .

第1张 ,你会看到前4行的数据。

第二张 ,你会看到第5至8行的数据。

第3张 ,你会看到最后4行的数据。

阅读更多。 Excel VBA:根据行数将工作表分割成多个表

类似读物

  • 如何在Excel中分屏(3种方法)
  • [修复:]Excel视图并排工作不正常
  • 如何在Excel中分离表(6种有效方法)
  • 分别打开两个Excel文件(5种简单方法)
  • 如何将Excel工作表分割成多个文件(3种快速方法)

3.根据柱子将Excel工作表分割成多个工作簿

在开始程序之前,你需要记住,你必须从第一行和第一列开始数据。

现在,打开 开发商 标签>> 选择 视觉基础

它将打开一个新的窗口 微软Visual Basic应用程序 .

现在,从 插入 >> 选择 模块

A 模块 将在那里开放。

然后,在以下代码中写上 模块 .

 Sub SplitSheetIntoMultipleWorkbooksBasedOnColumn() Dim objWorksheet As Excel.Workheet Dim nLastRow, nRow, nNextRow As Integer Dim strColumnValue As String Dim objDictionary As Object Dim varColumnValues As Variant Dim varColumnValue As Variant Dim objExcelWorkbook As Excel.Workbook Dim objSheet As Excel.Worksheet Set objWorksheet = ActiveSheet nLastRow =objWorksheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row Set objDictionary = CreateObject("Scripting.Dictionary") For nRow = 2 To nLastRow strColumnValue = objWorksheet.Range("C" & nRow).Value 如果 objDictionary.Exists(strColumnValue) = False 那么 objDictionary.Add strColumnValue, 1 End If Next varColumnValues = objDictionary.KeysFor i = LBound(varColumnValues) To UBound(varColumnValues) varColumnValue = varColumnValues(i) Set objExcelWorkbook = Excel.Application.Workbooks.Add Set objSheet = objExcelWorkbook.Sheet(1) objSheet.Name = objWorksheet.Name objWorksheet.Rows(1).EntireRow.Copy objSheet.Activate objSheet.Range("A1").Select objSheet.PasteFor nRow = 2 To nLastRow If CStr(objWorksheet.Range("C" & nRow).Value) = CStr(varColumnValue) Then objWorksheet.Rows(nRow).EntireRow.Copy nNextRow = objSheet.Range("A" & objWorksheet.Rows.Count).End(xlUp) .Row + 1 objSheet.Range("A" & nNextRow) .Select objSheet.PasteobjSheet.Columns("A:D").AutoFit End If Next Next End Sub 

在这里,我创建了一个子程序,名为 基于列的多本工作簿的拆分表(SplitSheetIntoMultipleWorkbooksBasedOnColumn ,其中我声明了多个变量。

我用了3 循环。 第一届 循环将计算从第2行到最后一行的数值,以获得特定的列。 我已经给出了 "C" 列。

你可以根据你的情况来改变它

第二届 对于 循环将创建一个新的Excel工作簿。

第三届 r循环将复制相同列的数据 "C" 价值到新的工作簿,从第二行到最后一行的价值。

然后。 拯救 代码,然后回到工作表。

现在,打开 查看 标签>> 来自 巨集 >> 选择 查看宏

A 对话框 将会弹出。

现在,从 巨集名称 选择 基于列的多本工作簿的拆分表(SplitSheetIntoMultipleWorkbooksBasedOnColumn 同时选择工作簿中的 巨集在 .

最后。 运行 选定的 宏观 .

最后,你会看到有3个新的工作簿被创建,因为有3个不同的 几个月 在列 C ...... 第一册 一月 .

ǞǞǞ 第二册 2月 .

ǞǞǞ 第三册 三月 .

阅读更多。 如何根据列值将Excel工作表分割成多个表

总结

在这篇文章中,我解释了如何将Excel工作表分割成多个工作表的3种方法。 你可以按照任何一种解释的方法将你的Excel工作表分割成多个工作表。 如果你对这些方法有任何困惑或疑问,你可以在下面评论。

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.