按行数拆分大型excel文件

Posted

技术标签:

【中文标题】按行数拆分大型excel文件【英文标题】:Split large excel file by number of rows 【发布时间】:2014-04-10 08:36:07 【问题描述】:

我有一个大约 3000 行的大型 Excel 文件。

我想将此数据分成 100 行的组

excel中有没有可以帮我把这些数据拆分成不同的命令

每 100 行的工作表或文件?

【问题讨论】:

是的,只有一种工具。您需要一个 VBA 脚本。 您可以使用 splitmyexcelfile.com 我在尝试将一个非常大的文件重新导入我们的业务系统时遇到了这个问题。 Odoo 导入超时,因为文件中的行太多。我最终花了几个小时通过复制粘贴将 10k 行分成 30 个文件,因为我不能被要求学习 VBA 或仅仅为这个小问题做一个宏。所以我让一个程序员联系为它开发了一个网站——splitmyexcelfile.com 它运行得很好。我给所有懒惰的隔间工作人员的礼物…… 【参考方案1】:

您可以通过辅助列来做到这一点:

1st -- 在左侧插入一列(即 A 列)。

第 2 次 -- 以 1 到 3000 的序列填写新列(或者你有多少行)。

3rd -- 在 A 列系列末尾下方的两个单元格中,输入 100.5 和 200.5。突出显示这些单元格,然后使用 Ctrl + Shift + 向下箭头 并选择填充系列(将步长值保留为 100)

4th -- A 列升序排序。

5th -- 删除 A 列。每 100 行将有一个空白行,剩下的都是空白行。

【讨论】:

【参考方案2】:

我找到了这个基于 VBA 的解决方案:http://nationbuilder.com/how_can_i_split_files_too_big_to_import

但是,该解决方案缺乏决定每个文件有多少行的能力。而是将文件拆分为 X 个行数相等的文件。当然,您可以通过将总行数除以您希望在每个文件中拥有的行数来计算这一点,但由于四舍五入,这很少能准确地给出您想要的行数。

也许有人可以提出修改后的宏?

【讨论】:

这本质上是一个仅链接的答案。这样做的问题是,如果链接的网页碰巧关闭了,这个答案将不再是一个有效的答案。【参考方案3】:

对于类似问题的另一个问题的答案很好的解决方案:https://***.com/a/18001183

但是,我需要在不向每个新文件添加标题的情况下拆分文件,只添加数据行。我修改/简化的代码:

Sub Test()
  Dim wb As Workbook
  Dim ThisSheet As Worksheet
  Dim NumOfColumns As Integer
  Dim RangeToCopy As Range
  Dim WorkbookCounter As Integer
  Dim RowsInFile
  Dim Prefix As String

  Application.ScreenUpdating = False

  'Initialize data
  Set ThisSheet = ThisWorkbook.ActiveSheet
  NumOfColumns = ThisSheet.UsedRange.Columns.Count
  WorkbookCounter = 1
  RowsInFile = 100                   'how many rows (incl. header) in new files?
  Prefix = "test"                    'prefix of the file name

  For p = 1 To ThisSheet.UsedRange.Rows.Count Step RowsInFile
    Set wb = Workbooks.Add

    'Paste the chunk of rows for this file
    Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 1, NumOfColumns))
    RangeToCopy.Copy wb.Sheets(1).Range("A1")

    'Save the new workbook, and close it
    wb.SaveAs ThisWorkbook.Path & "\" & Prefix & "_" & WorkbookCounter
    wb.Close

    'Increment file counter
    WorkbookCounter = WorkbookCounter + 1
  Next p

  Application.ScreenUpdating = True
  Set wb = Nothing
End Sub

【讨论】:

以上是关于按行数拆分大型excel文件的主要内容,如果未能解决你的问题,请参考以下文章

excel16版表格显示为RC[],怎么设置按行数和列数显示

如何在SSIS中将大型Excel文件拆分为多个小文件?

sh 将大文件拆分为小文本文件(按行数)

Linux查看文件总的数据行数,并按行拆分

将大型 .csv 文件导入 Excel,

如何将大文本文件拆分为行数相等的小文件?