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

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

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

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

每 100 行的工作表或文件?

【问题讨论】:

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

标签: excel split large-data


【解决方案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://stackoverflow.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
    

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 2022-12-15
      • 2011-09-22
      • 2014-10-22
      • 2015-03-16
      相关资源
      最近更新 更多