2将Excel工作表内容按列分割为多个工作簿的快速方法

有时,在数据分析中,您可能需要根据特定列将Excel工作表的内容分割为多个Excel工作簿。现在,在这篇文章中,我们将教你2种快速获得它的方法。

许多用户经常需要根据特定的列将包含大量数据行的Excel工作表拆分为多个单独的Excel工作簿。例如,这是我的Excel工作表示例。我想根据“单个许可证的价格(US$)”列将此表的数据拆分为多个工作簿。

Excel工作表样本

通常,您会倾向于使用下面的方法1来手动筛选和复制数据。但是,如果有太多的过滤器选项,这将是相当乏味和愚蠢的。因此,在这里我们还展示了一种更方便的方法-方法2,它使用VBA。现在,请继续阅读以获得它们的详细信息。

方法1:将内容复制到筛选后的分离Excel工作簿

  1. 首先,在特定列中选择一个单元格,比如在我自己的实例中选择“cell B1”。
  2. 然后转到“数据”页签,点击“筛选”按钮。过滤数据
  3. 接下来,单击列标题中的“向下箭头”按钮,显示筛选器选项列表。
  4. 现在,取消选中“(全选)”选项。取消勾选“全选”
  5. 之后,你可以选择一个过滤器选项,比如我例子中的“29.95”,然后点击“确定”。
  6. 此时,只剩下B列值为“29.95”的数据。只留下过滤后的数据
  7. 然后,复制过滤后的数据并将其粘贴到新的Excel工作簿中。复制粘贴内容
  8. 稍后,使用相同的方法将其他数据分割为单独的Excel工作簿。

方法二:通过VBA批量分割内容到多个Excel工作簿

  1. 首先,确保特定的工作表是打开的。
  2. 接下来,根据“”启动VBA编辑器如何在Excel中运行VBA代码”。
  3. 然后,将以下代码放入“ThisWorkbook”项目中。
Sub SplitSheetDataIntoMultipleWorkbooksBasedOnSpecificColumn() Dim objWorksheet As Excel。工作表的nLastRow, nRow, nNextRow作为整数Dim strColumnValue作为字符串Dim objDictionary作为对象Dim varColumnValues作为变体Dim varColumnValue作为变体Dim objExcelWorkbook作为Excel。工作簿Dim objSheet As Excel。工作表设置objWorksheet =活动表nLastRow = objWorksheet。Range("A" & objWorksheet.Rows.Count). end (xlUp)。行设置objDictionary = CreateObject("Scripting.Dictionary") For nRow = 2 To nLastRow '获取特定的列'这里我的实例是"B"列'你可以改变它到你的情况strColumnValue = objWorksheet。范围("B" & nRow)。如果objDictionary. exists (strColumnValue) = False,则objDictionary. exists (strColumnValue) = False。Add strColumnValue, 1结束如果Next varColumnValues = objDictionary. Add strColumnValue, 1结束键i = LBound(varColumnValues)到UBound(varColumnValues) varColumnValue = varColumnValues(i)创建一个新的Excel工作簿Set objExcelWorkbook = Excel. application . workbooks . add Set objExcelWorkbook = objExcelWorkbook. sheets (1) objSheet。Name = objWorksheet。的名字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

VBA代码-根据特定列将Excel工作表的内容分割为多个工作簿

  1. 点击工具栏上的“运行”图标或按“F5”键。
  2. 宏完成后,将使用源Excel工作表中的分割数据创建单独的Excel工作簿。新的Excel工作簿
  3. 每个工作簿看起来像下面的截图。分开新建Excel工作簿

比较

优势 缺点
方法1 1.易于操作的所有Excel用户 如果有太多的过滤器选择,会很麻烦
2.如果筛选器选择不多,速度很快
方法2 无论选择多少过滤器,都比方法1高效得多 对于VBA新手来说,操作起来有点困难

防止Excel数据丢失

虽然MS Excel变得越来越先进和复杂,但由于各种因素,如恶意第三方插件或人为错误等,它仍然会不时崩溃。因为Excel会直接导致崩溃Excel腐败,为避免Excel资料遗失,你必须定期备份Excel档案。否则,需要应用Excel修复工具(如DataNumen Excel repair)修复损坏的Excel文件。

作者简介:

Shirley Zhang是DataN万博ManBetX手机下载umen, Inc.的数据恢复专家,该公司是数据恢复技术的世界领导者,包括SQL Server修复并展望维修软件产品。万博体育app官方网下载欲了解更多信息,请访问www.circareview.com

对“基于特定列将Excel工作表的内容分割为多个工作簿的2种快速方法”的5个回答

  1. 如果我想让每个新工作簿都命名为“工作簿”,无论B列中的值是什么,我该如何做呢?

  2. 你好,

    有没有办法让新文件自定义命名并保存在一个特定的文件夹请?除了自定义文件夹命名和保存外,一切都很顺利。
    谢谢。

    马克

  3. 你好。如果列被切换,价格在A列而不是B列,VBA代码将如何改变?我试过自己修改代码,但没有用。

    此外,是否有可能根据已经完成的模板生成新的工作表?所以基本上,我想把数据复制到模板,然后保存到文件夹中。

  4. 去吧,fila。Te dice que va desde la segunda fila hasta la última con contenido (la fila 1 es la cabecera)。Para cambiar la column tienes que modificar donde pone . range(“B”…por la column que tu quieras)。Si quieres la D sería .Range(“D”....

  5. “For nRow = 2 To nLastRow”是否等于列“B”,所以如果我想要列D,我会把它改为4?

留下回复

你的电邮地址将不会公布。必填字段已标记