有时,在数据分析中,您可能需要将一个Excel工作表的内容按照特定的列拆分到多个Excel工作簿中。 现在,在这个 post,我们将教您 2 种快速获取方法。
许多用户经常需要将包含大量数据行的 Excel 工作表根据特定列拆分为多个单独的 Excel 工作簿。 例如,这是我的示例 Excel 工作表。 我想根据“单许可证价格(美元)”列将此工作表的数据拆分到多个工作簿中。
通常,您会倾向于使用以下方法 1 来手动过滤和复制数据。 但是,如果过滤器选项太多,那将是相当乏味和愚蠢的。 因此,我们在这里也展示了一种更方便的方法——方法2,它使用VBA。 现在,继续阅读以详细了解它们。
方法一:过滤后复制内容到单独的Excel工作簿
- 首先,在特定列中选择一个单元格,例如我自己的实例中的“Cell B1”。
- 然后,转到“数据”选项卡并单击“过滤器”按钮。
- 接下来,单击列标题中的“向下箭头”按钮以显示过滤器选项列表。
- 现在,取消选中“(全选)”选项。
- 之后,您可以选择一个过滤器选项,例如我的示例中的“29.95”,然后单击“确定”。
- 立刻只剩下 B 列中值为“29.95”的数据。
- 然后,复制过滤后的数据并将其粘贴到新的 Excel 工作簿中。
- 后面用同样的方法将其他数据拆分到单独的Excel工作簿中。
方法二:通过VBA批量拆分内容到多个Excel工作簿
- 首先,确保特定工作表已打开。
- 接下来,根据“如何在 Excel 中运行 VBA 代码“。
- 然后,将以下代码放入“ThisWorkbook”项目中。
Sub SplitSheetDataIntoMultipleWorkbooksBasedOnSpecificColumn()
Dim objWorksheet As Excel.Worksheet
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
'Get the specific Column
'Here my instance is "B" column
'You can change it to your case
strColumnValue = objWorksheet.Range("B" & nRow).Value
If objDictionary.Exists(strColumnValue) = False Then
objDictionary.Add strColumnValue, 1
End If
Next
varColumnValues = objDictionary.Keys
For i = LBound(varColumnValues) To UBound(varColumnValues)
varColumnValue = varColumnValues(i)
'Create a new Excel workbook
Set objExcelWorkbook = Excel.Application.Workbooks.Add
Set objSheet = objExcelWorkbook.Sheets(1)
objSheet.Name = objWorksheet.Name
objWorksheet.Rows(1).EntireRow.Copy
objSheet.Activate
objSheet.Range("A1").Select
objSheet.Paste
For nRow = 2 To nLastRow
If CStr(objWorksheet.Range("B" & nRow).Value) = CStr(varColumnValue) Then
'Copy data with the same column "B" value to new workbook
objWorksheet.Rows(nRow).EntireRow.Copy
nNextRow = objSheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row + 1
objSheet.Range("A" & nNextRow).Select
objSheet.Paste
objSheet.Columns("A:B").AutoFit
End If
Next
Next
End Sub
- 之后,单击工具栏中的“运行”图标或按“F5”键按钮。
- 宏完成后,将使用源 Excel 工作表中的拆分数据创建单独的 Excel 工作簿。
- 每个工作簿都将类似于以下屏幕截图。
对比
| 优势 | 缺点 | |
| 方法1 | 1.所有Excel用户都易于操作 | 如果过滤器选择太多会很麻烦 |
| 2.如果过滤器选择很少,则快速 | ||
| 方法2 | 无论过滤器选择的数量如何,都比方法 1 更有效 | 对于VBA新手来说有点难操作 |
防止 Excel 数据丢失
尽管 MS Excel 变得越来越先进和复杂,但它仍然会不时地由于各种因素而崩溃,例如恶意的第三方加载项或人为错误等。 由于Excel崩溃会直接导致 Excel 腐败,为避免 Excel 数据丢失,您必须定期备份 Excel 文件。 否则,您需要应用Excel修复工具,例如 DataNumen Excel Repair 修复损坏的 Excel 文件。
作者简介:
Shirley Zhang 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 SQL Server 修复 和 outlook 修复软件产品。 欲了解更多信息,请访问 datanumen.com







