excel-文件处理
执行步骤
1、打开表格,按 Alt+F11 打开 VBA 编辑器
2、左侧右键当前工作簿 → 插入 → 模块
3、粘贴下面代码,修改拆分列号 (比如 A 列 = 1,B 列 = 2)
宏脚本如下:
4、按F5运行,自动在表格同目录生成拆分结果文件夹,每个类别一个 Excel
权限控制
第一步:先开宏权限(必做,不然按 F5 完全没反应)
文件 → 选项 → 信任中心 → 信任中心设置
宏设置 → 启用所有宏
保存文件格式:另存为 .xlsm 启用宏工作簿,不能是.xlsx
第二步:复制下面完整版可用代码
Alt+F11 → 插入 → 模块 → 全部粘贴
第三步:再按 F5
立刻弹出提示,同文件夹出现【拆分文件】文件夹
宏脚本如下:
宏脚本如下:
宏脚本如下:
Sub 按A列批量拆分_不会空白版()
Dim 最后行 As Long, i As Long, k As Long
Dim 文件名 As String, 保存路径 As String
Dim ws As Worksheet, 新表 As Workbook
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
保存路径 = ThisWorkbook.Path & "\A列拆分结果\"
If Dir(保存路径, vbDirectory) = "" Then MkDir 保存路径
Set ws = ActiveSheet
最后行 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
'先按A列排序,相同内容挨在一起(关键!不然文件空白)
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add key:=Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending
ws.Sort.SetRange Range("A1").CurrentRegion
ws.Sort.Header = xlYes
ws.Sort.MatchCase = False
ws.Sort.Orientation = xlTopToBottom
ws.Sort.Apply
i = 2
Do While i <= 最后行
文件名 = ws.Cells(i, 1).Value
'过滤非法文件名符号
文件名 = Replace(Replace(Replace(文件名, "\", ""), "/", ""), ":", "")
文件名 = Replace(Replace(Replace(文件名, "*", ""), "?", ""), """", "")
文件名 = Replace(Replace(Replace(文件名, "<", ""), ">", ""), "|", "")
Set 新表 = Workbooks.Add
ws.Rows(1).Copy 新表.Sheets(1).Range("A1")
'把所有相同A值行一次性复制
k = i
Do While k <= 最后行 And ws.Cells(k, 1).Value = ws.Cells(i, 1).Value
ws.Rows(k).Copy 新表.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
k = k + 1
Loop
新表.SaveAs 保存路径 & 文件名 & ".xlsx", FileFormat:=51
新表.Close False
i = k
Loop
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
MsgBox "拆分完成!所有文件都在A列拆分结果文件夹"
End Sub
-------------------------------------------------------------------------------
