ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 500|回复: 14

[求助] 哪位大哥帮我看看excel怎么拆分每个文件都是1万个数据,每个文件第一行标题需要保留

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-1 16:55 | 显示全部楼层 |阅读模式
本帖最后由 动鸡不醇 于 2024-6-1 16:59 编辑

哪位大哥帮我看看excel总表怎么自动拆分每个文件都是1万个数据,保存N个文件,每个文件第一行标题需要保留

因为还有上百万个文件需要拆分  非常感谢

格式.zip

799.77 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-6-1 16:59 | 显示全部楼层
你得说明如何拆分吧,按什么条件拆分,,,最好模拟一下结果,,,
用VBA处理

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-1 17:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
沈默00 发表于 2024-6-1 16:59
你得说明如何拆分吧,按什么条件拆分,,,最好模拟一下结果,,,
用VBA处理

您好,就按照里面的数据   1-10000行保存为一个文件

TA的精华主题

TA的得分主题

发表于 2024-6-1 17:28 | 显示全部楼层
动鸡不醇 发表于 2024-6-1 17:17
您好,就按照里面的数据   1-10000行保存为一个文件

弄半天还以为是按三个空行分表,,,,三个空行还需要保留吗,还是也一起做删除处理了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-1 17:30 | 显示全部楼层
本帖最后由 动鸡不醇 于 2024-6-1 17:52 编辑

沈默00 发表于 2024-6-1 17:28
弄半天还以为是按三个空行分表,,,,三个空行还需要保留吗,还是也一起做删除处理了
我这里有个代码,就是保存第一个文件的时候是空白的,后面的文件就不会,麻烦您帮我看看


Sub 宏1()
    hs = Worksheets("sheet3").UsedRange.Rows.Count
    wjs1 = (hs - 1) / 10000
    wjs2 = Int(wjs1)
    If wjs1 - wjs2 > 0 Then
        wjs0 = wjs2 + 1
    Else
        wjs0 = wjs2
    End If
    MsgBox ("请选择需要合并的excel所在文件夹")
    Set objFD = Application.FileDialog(msoFileDialogFolderPicker)
        With objFD
            If .Show = -1 Then
    '            如果单击了确定按钮,则将选取的路径保存在变量中
                spath = .SelectedItems(1)
            End If
        End With
    Debug.Print spath
    lujing1 = spath + "\第"
    Dim Wb As Excel.Workbook
    Dim Wk As Excel.Workbook
    Set Wk = ThisWorkbook
    For i = 1 To wjs0
      Workbooks.Add
            ActiveWorkbook.SaveAs Filename:=lujing1 & i & "个文件.xlsx", FileFormat:= _
             xlOpenXMLWorkbook, CreateBackup:=False
    Set Wb = Application.Workbooks.Open(lujing1 & i & "个文件.xlsx")
    Wk.Activate
    Range("1:1").Select
    Selection.Copy
    Wb.Activate
    Worksheets("sheet1").Activate
    Worksheets("sheet1").Rows(1).Select
    ActiveSheet.Paste
    Wk.Activate
    If i = 1 Then
      j = 2
    ElseIf i = wjs0 Then
      j = (i - 1) * 10000 + 2
      Range(j & ":" & hs).Select
    Else
     j = (i - 1) * 10000 + 2
     Range(j & ":" & (i * 10000 + 1)).Select
    End If
    Selection.Copy
    Wb.Activate
    Worksheets("sheet1").Activate
    Worksheets("sheet1").Rows(2).Select
    ActiveSheet.Paste
    Range("B1:B501").Select
    Selection.NumberFormatLocal = "G/通用格式"
    ActiveWorkbook.Close savechanges:=True
    Wk.Activate
    Next i
      
   
  
End Sub


TA的精华主题

TA的得分主题

发表于 2024-6-2 07:49 | 显示全部楼层
你没回答我的问题,这是没有删除空白行的代码,,如果要删,你自己加吧
image.png

TA的精华主题

TA的得分主题

发表于 2024-6-2 07:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你先试试,数据多可能会慢点,真的太慢就换成数组写

格式.rar

535.03 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-6-2 10:44 | 显示全部楼层
Sub 按行拆分()
Application.ScreenUpdating = False
Dim ar As Variant
Dim i As Long
Dim br(), cr()
Dim rn As Range
With ActiveSheet
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    ar = .Range("a1:d" & r)
    Set rn = .Rows(1)
    ReDim br(1 To UBound(ar), 1 To UBound(ar, 2))
    For i = 1 To UBound(ar)
        If ar(i, 1) <> "" Then
            n = n + 1
            For j = 1 To UBound(ar, 2)
                br(n, j) = ar(i, j)
            Next j
        End If
    Next i
End With
lj = ThisWorkbook.Path & "\拆分文件\"
Application.SheetsInNewWorkbook = 1
For i = 2 To n Step 10000
    m = 0: k = k + 1
    ReDim cr(1 To UBound(ar), 1 To UBound(ar, 2))
    For s = i To i + 9999
        If s <= n Then
            m = m + 1
            For j = 1 To UBound(br, 2)
                cr(m, j) = br(s, j)
            Next j
        End If
    Next s
    Set wb = Workbooks.Add
    With wb.Worksheets(1)
        .Name = k
        .Columns(3).NumberFormatLocal = "@"
        rn.Copy .[a1]
        .[a2].Resize(m, UBound(cr, 2)) = cr
        .Columns("a:c").AutoFit
    End With
    wb.SaveAs Filename:=lj & k & ".xlsx"
    wb.Close
Next i
Application.ScreenUpdating = True
MsgBox "共拆分了" & k & "个文件!"
End Sub

TA的精华主题

TA的得分主题

发表于 2024-6-2 10:45 | 显示全部楼层
格式.rar (538.71 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

发表于 2024-6-2 11:17 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 13:19 , Processed in 0.035931 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表