按照某列将一张工作表拆分到多个工作表,这是一个很实用的技巧。
比如:已经计算好的各地区的销售明细,怎么按照地区拆分到各个工作表中?
如果会使用VBA的同学,一键就能生成
不使用VBA,还能做吗?
利用透视表按照关键字段就可以拆分
0 1
添加辅助列
0 2
建立透视表
0 3
设置透视表区域
辅助列用鼠标拖拉到"筛选"区域,其他列都拖拉到"行"区域
0 4
设置报表布局
按下图设置报表布局,并禁用分类汇总和总计
0 5
显示筛选页
菜单选择"分析"-"选项"-"显示筛选页"
并按Shift选择工作表,把表格都转成数值。
用"显示报表筛选页"功能,便可拆分到多张工作表。
操作很简单,练几次就可以上手了。
如果想灵活选择某列或一键生成,当然是选择VBA。
两者各有优点,下面附上通用的拆分代码,供大家学习。
按Alt+F11,插入模块,把代码粘贴到模块中
Sub 按指定列分组拆分数据() Application.ScreenUpdating = False Application.DisplayAlerts = False Set sh = ActiveSheet For i = Sheets.Count To 1 Step -1 If Sheets(i).Name <> sh.Name Then Sheets(i).Delete End If Next i Dim splitColumnRange As Range Set splitColumnRange = Application.InputBox(prompt:="请选择拆分的列:选择任何一个该列的单元格即可", Type:=8) Dim columnNumToSplit As Long n = splitColumnRange.Column Set Rng = splitColumnRange.CurrentRegion arr = Rng Rng.Sort Key1:=Rng(1, n), Order1:=xlAscending, _ Header:=xlGuess, OrderCustom:=1 brr = Rng(1, 1).Resize(UBound(arr) + 1, UBound(arr, 2)) ReDim crr(1 To UBound(brr), 1 To UBound(brr, 2)) x = 1 For i = 2 To UBound(brr) - 1 x = x + 1 For j = 1 To UBound(brr, 2) brr(x, j) = brr(i, j) Next If brr(i, n) <> brr(i + 1, n) Then Set sht = Sheets.Add(after:=Sheets(Sheets.Count)) sht.Name = brr(i, n) sht.Range("a1").Resize(x, UBound(brr, 2)) = brr x = 1 End If Next splitColumnRange.CurrentRegion = arr Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
好了,今天就分享到这,有问题可以给我留言。
点亮在看,你最好看!
热门跟贴