怎么把一个100w行数据的excel拆分成50个、每个2w行数据的excel?

怎么把一个100w行数据的excel拆分成50个、每个2w行数据的excel?

亲,这个要用VBA编程才能做到。运行下面的程序后,将在源文件相同的文件夹下生成以数字序号为名称的50个文件。

 

打开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧对应的Sheet上双击,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。

代码中的标题行数和每个文件的行数可以自行调整。

 

 

Sub cfb()
Dim r, c, i, WJhangshu, WJshu, bt As Long
r = Range("A" & Rows.Count).End(xlUp).Row
c = Cells(1, Columns.Count).End(xlToLeft).Column
bt = 1 '标题行数
WJhangshu = 20000 '每个文件的行数
WJshu = IIf(r - bt Mod 20000, Int((r - bt) / WJhangshu), Int((r - bt) / WJhangshu) + 1)
For i = 1 To WJshu
    Workbooks.Add
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(i, String(Len(WJshu), 0)) & ".xlsx"
    Application.DisplayAlerts = True
    ThisWorkbook.ActiveSheet.Range("A1").Resize(bt, c).Copy ActiveSheet.Range("A1")
    ThisWorkbook.ActiveSheet.Range("A" & bt + i * WJhangshu + 1).Resize(WJhangshu, c).Copy _
     ActiveSheet.Range("A" & bt + 1)
    ActiveWorkbook.Close True
Next
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-12
Sub cfb()
Dim r, c, i, WJhangshu, WJshu, bt As Long
r = Range("A" & Rows.Count).End(xlUp).Row
c = Cells(1, Columns.Count).End(xlToLeft).Column
bt = 1 '标题行数
WJhangshu = 20000 '每个文件的行数
WJshu = IIf(r - bt Mod 20000, Int((r - bt) / WJhangshu), Int((r - bt) / WJhangshu) + 1)
For i = 0 To WJshu
    Workbooks.Add
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(i, String(Len(WJshu), 0)) & ".xlsx"
    Application.DisplayAlerts = True
    ThisWorkbook.ActiveSheet.Range("A1").Resize(bt, c).Copy ActiveSheet.Range("A1")
    ThisWorkbook.ActiveSheet.Range("A" & bt + i * WJhangshu + 1).Resize(WJhangshu, c).Copy _
     ActiveSheet.Range("A" & bt + 1)
    ActiveWorkbook.Close True
Next
End Sub

楼上的这个代码,第一个文件未分割出来。特代码更新一下。

这里还有个小问题,就是如果总行数和单个文件行数整除的话,最后会分割出来一个空白文档,求高手更正。

第2个回答  2015-12-16
在名称框中输入 A20001:D40000(假设表格就到D列),回车,就选中了20001到40000行数据区域了,右键---复制,就可以粘贴到预定位置了。
再做A40001:D60000的区域就是了。
第3个回答  2014-12-17
在空白列选择填充柄,起始为1终止为50,步长1.之后筛选,之后就都编号了 会有2w个1-50的数,再用高级筛选就可以分在不同的sheet里追问

我先试试,谢谢了先

没成功。。

第4个回答  2017-11-25

i应从0开始,第一个2W条数据丢失

相似回答