按行数拆分大型Excel文件

10

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

我想把这些数据分成每组100行。

在Excel中是否有命令可以帮助我将这些数据分成不同的工作表或每100行一个文件?


是的,有一个工具。你需要一个VBA脚本。 - ttaaoossuuuu
2
你可以使用splitmyexcelfile.com。我在尝试重新将一个非常大的文件导入我们的业务系统时遇到了这个问题。由于文件中有太多行,Odoo导入超时了。最终,我花了几个小时通过复制粘贴将10k行拆分成30个文件,因为我不想学习VBA或者为这个小问题编写宏。所以我联系了一位程序员开发了一个网站 - splitmyexcelfile.com。它运行得非常好。这是我送给所有懒惰的办公室工作者的礼物... - erkosteen
3个回答

12

在这个回答中,有一个不错的解决方案可以应用到类似问题上:https://dev59.com/O2Ml5IYBdhLWcg3w9qzu#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

0
您可以通过使用辅助列的方式来完成这个操作:
第一步--在左侧(即A列)插入一列。
第二步--在新列中填写一个从1到3000(或者您有多少行数据就填写到多少)的数字序列。
第三步--在A列数字序列结束的下面两个单元格里输入100.5和200.5。选中这些单元格,然后使用Ctrl + Shift + Down Arrow,选择“填充序列”(将步骤值保持为100)。
第四步--对A列进行升序排序。
第五步--删除A列。这样每100行就会有一行空白行,其余内容则保留。

-1

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

然而,该解决方案缺乏决定每个文件有多少行的能力。相反,它将文件分成X个具有相等行数的文件。当然,你可以通过将总行数除以每个文件中想要拥有的行数来计算这个值,但由于四舍五入的原因,这很少会给你恰好想要的行数。

也许有人可以想出一个修改过的宏?


1
这本质上是一个仅包含链接的答案。问题在于,如果该链接的网页发生故障,那么这个答案将不再有效。 - Jerry
解决方案的步骤太多了,我失败了。因为我不想开始免费试用。 - Logan Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接