excel用vba如何按某列对一个工作簿里的两个工作表进行分表拆成多个工作簿?

vba 一个工作簿有两个工作表,两个表有同样的一列(比如部门名称),按这列(部门名称)同时对两个工作表进行分表,每个部门一个工作簿,里面有这个部门的两个表数据,怎么实现。

这下子明白了,部门都在A列,表头只有一行,代码如下图:

下面的文字仅供参考,浏览器可能会偷吃字符:

Option Explicit


Sub 拆分()
Dim depts, dept, arr, i, j, st, wb, st2
Set depts = CreateObject("scripting.dictionary")
'第一次扫描,获得所有部门清单
For Each st In Sheets
arr = st.UsedRange
For i = 2 To UBound(arr)
dept = Trim(arr(i, 1))
If dept <> "" Then depts(dept) = True
Next i
Next st
'第二次扫描,生产各部门文件
Set wb = ThisWorkbook
For Each dept In depts.keys
With Workbooks.Add
For Each st In wb.Sheets
arr = st.UsedRange
Set st2 = .Sheets.Add(after:=.Sheets(.Sheets.Count))
st2.Name = st.Name
j = 0
For i = 1 To UBound(arr)
If i = 1 Or Trim(arr(i, 1)) = dept Then
j = j + 1
st.Rows(i).Copy st2.Rows(j)
End If
Next i
Next st
.SaveAs wb.FullName & "." & dept & ".xlsx"
.Close
End With
Next dept
End Sub追问

For i = 2 To UBound(arr) 这行就开始报错了,能帮忙试下吗

追答

这是因为你的工作簿里面有空表

温馨提示:内容为网友见解,仅供参考
第1个回答  2022-03-15
Option Explicit

Sub 按部门分表()'各个部门是连续的
Dim s As Long, infor
Dim i As Long
Dim Bool As Boolean
With ThisWorkbook.Worksheets("人员信息")
Bool = True
s = 2
For i = 2 To .Range("A" & .Cells.Rows.Count).End(xlUp).Row + 1
If Bool Then
infor = .Cells(s, 1)
Bool = False
End If
If .Cells(i, 1) <> infor Then
Workbooks.Add
.Rows("1:1").Copy ActiveWorkbook.Sheets(1).Range("A1")
.Rows(s & ":" & i - 1).Copy ActiveWorkbook.Sheets(1).Range("A2")
ActiveWorkbook.SaveAs Filename:="C:\Users\qq196\Desktop\123\" & .Cells(i - 1, 1) & ".xlsx"
ActiveWorkbook.Close
s = i
Bool = True
End If
Next i
End With
End Sub

excel用vba如何按某列对一个工作簿里的两个工作表进行分表拆成多个...
Sub 拆分()Dim depts, dept, arr, i, j, st, wb, st2Set depts = CreateObject("scripting.dictionary")'第一次扫描,获得所有部门清单For Each st In Sheetsarr = st.UsedRangeFor i = 2 To UBound(arr)dept = Trim(arr(i, 1))If dept <> "" Then depts(dept) = TrueNext iNext ...

...Excel工作簿含有多个工作表,我要拆分成多个工作簿(一表一簿)分别放...
要用VBA , 例如拆分的:Alt+F11 视图--代码窗口,把如下复制进去(如果复制进去不换行,复制到Word 再复制进去) 按F5运行即可最好把这个Excel 放到一个文件夹内操作, 因为默认生成到当前文件夹,合并的 ,看你要怎么合并 Sub fencun()Application.ScreenUpdating = Falseb = Sheets.CountFor i =...

如何拆分excel 多个工作表
要将一个excel工作薄多张工作表拆分成多个对应的工作簿,可以使用vba实现:1、使用alt+f11 打开vbe编辑器,鼠标右键,插入模块 2、在生成的模块区域输入代码:3、代码:Sub test() Application.ScreenUpdating = False '关闭刷屏 For Each sht In Sheets '遍历每张工作表 sht.Copy '工作表cop...

如何将一个excel工作表的数据拆分成多个sheet
例如,可以编写一个宏,根据某一列的值将数据拆分到不同的工作表中。具体步骤包括:打开Excel的VBA编辑器,插入一个新的模块,并编写拆分数据的代码。代码逻辑大致是遍历原始数据,根据拆分依据创建或选择相应的工作表,然后将该行数据复制到对应的工作表中。举个例子,假设我们有一个包含员工销售数据的Ex...

execl!怎么从一个数据表中拆分成多个工作表?
第一步,统计部门数量,新建与部门数量相等的工作表。通过VBA代码实现统计部门数量(iROW),并据此新建相应数量的工作表。执行代码后,系统会自动添加E列,同时在Excel文档中新增iROW个空白工作表。第二步,将数据移动至对应的新工作表。通过编写VBA代码,将数据依据部门字段移动至新建的工作表中。执行后,...

vba精选 如何将一个Excel工作表的数据按一列的关键字拆分成多个
附件中的excel的作用是,将指定的某个打开的工作薄中的一张大表,按指定的一列中不同的关键字拆分到多个工作表,或是多个工作薄中。切记一点的是,需要拆分的工作表,要打开着。否则会出错。以下所说的关键字,其实就是指定区域所含的不重复单元格。说明:1、点击上面的按钮后,首选要输入需要拆分的...

怎么拆分一个Excel工作簿中的多个工作表
有两种常用的方法,下面以EXCEL2007版本为例进行操作,其它版本的方法大同小异:1、使用VBA来完成这项工作,具体方法和步骤如下:1.1 同时按下ALT+F11 1.2 双击ThisWorkbook 1.3 粘贴如下代码 Sub 拆分工作表() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim sht As ...

...工作表的工作簿按一个筛选条件去分成多个工作簿?
如果经常做这样的表格,建议你下个“方方格子”,去百度下载安装,安装完后再打开表格就在你的表任务栏了,可以对工作表和工作簿进行拆分、汇总、合并等等,对数据分析帮助很大,一键就能拆分、合并等

excel怎样将一个表格拆分成多个工作表
以WPS 2019版本为例:关于Excel把一个工作表拆分成多个工作表,您可使用WPS参考下述步骤完成操作:1、打开「表格(Excel)」文档;2、点击「数据-拆分表格」;3、按需选择「把工作表按照内容拆分」或「把工作簿按照工作表拆分」使用即可。

如何用excel vba拆分有多个工作表的工作簿为多个规律命名的单工作表工作...
Sub 工作簿拆分()Dim wb As Workbook, sh As WorksheetFor Each sh In Worksheets '遍历所有工作表 sh.Copy '复制工作表 Set wb = ActiveWorkbook '到新的工作簿 k = k + 1 '计数 '注:此行也可写成k=sh.name 如果这样写,则下行中汉字去掉。 wb.SaveAs ThisWork...

相似回答