网站首页 > 开源技术 正文
前面我们已经掌握了单元格、工作表、按钮关联宏的使用今天我们就做一个综合案例
做案例之前我们先补充一点新知识
- Cells(2,3) //表示两行三列的单元格
- Range(“a1”).offset(1,2) // 下移一行,右移2行
- Range(“a10”).end(xlup) //从a10往上数,有多少行已用
- Range(“a10”).entirerow //选中a10的整行
- Range(“a10”).resize(1,10) //重选区域
- Range(“a10”).copy //复制
- sheet1.Range("a:f").AutoFilter field:=4, Criteria1:="一车间" //'在sheet1中筛选第四列为一车间的数据。其中field是第x列,Criteria1是筛选条件。注意Criteria1最后一个是数字1
案例
题目:
excel将下面叫做“数据”的工作表根据分类条件拆分成多个sheet工作表,表名为分类条件。
结果如下:
分析:
- 要新建所有分类表,在总表中循环每行,把要筛选的列值作为新建的表名, 每次循环要判断是否已存在表名,重复建表会报错
- 删除多余的表,不然每次执行会产生很多表比较混乱
- 需要筛选拷贝数据。
注意:执行这段代码前必须选中总表即你要拆分的表,否则数据会遭到破坏
代码:
Sub chaifen()
Dim i As Integer
Dim j, k, irow, count As Integer
Dim sht As Worksheet
Dim sht1 As Worksheet
Dim x As Integer
Dim sht0 As Worksheet
Set sht0 = ActiveSheet
x = InputBox("请选择你要按哪列分,第几列就填几")
'执行分表前删除多余的表
Application.DisplayAlerts = False
If Sheets.count > 1 Then
For Each sht1 In Sheets
If sht1.Name <> sht0.Name Then
sht1.Delete
End If
Next
End If
Application.DisplayAlerts = True
'获取sheet1总行数
irow = sht0.Range("a65536").End(xlUp).Row
For i = 2 To irow
'初始化k
k = 0
For Each sht In Sheets
'判断是否已存在表名
If sht.Name = sht0.Cells(i, x) Then
k = 1
End If
Next
'如果不存在表名就新建一个表
If k = 0 Then
Sheets.Add after:=Sheets(Sheets.count)
Sheets(Sheets.count).Name = sht0.Cells(i, x)
End If
'筛选拷贝数据
For j = 2 To Sheets.count
sht0.Range("a1:f" & irow).AutoFilter field:=x, Criteria1:=Sheets(j).Name
sht0.Range("a1:f" & irow).Copy Sheets(j).Range("a1")
'关闭筛选
sht0.Range("a1:f" & irow).AutoFilter
Next
Next
sht0.Select
End Sub
注意:执行这段代码前必须选中总表即你要拆分的表,否则数据会遭到破坏
这段案例代码的知识点有:
- Set sht0 = ActiveSheet
- irow = sht0.Range("a65536").End(xlUp).Row
- Sheets(Sheets.count).Name = sht0.Cells(i, x)
- sht0.Range("a1:f"&irow).AutoFilter field:=x, Criteria1:=Sheets(j).Name
- sht0.Range("a1:f" & irow).Copy Sheets(j).Range("a1")
看了这篇文章觉得对你有用的话,关注我的公众号“学会数据分析”并且用你的小手帮忙分享一下。
我会经常总结一些案例和大家一些分享。
课件下载地址:
链接永久有效:
https://pan.baidu.com/s/1gAmb-z84vLh7u6X2mFY12Q
提取码: t1km 复制这段内容后打开百度网盘手机App,操作更方便哦
- 上一篇: 多个Excel工作簿,如何快速地合并到一起?
- 下一篇: 如何在Excel中批量去掉文字或数字
猜你喜欢
- 2024-10-31 Excel填充字母不会?学学这招吧(excel快速填充字母)
- 2024-10-31 vlookup函数傻瓜式的入门教程,每个人都可以学会
- 2024-10-31 共享数据资源,VBA代码导入已有文本数据文件的方法
- 2024-10-31 Excel中的换行符,这几种用法你会哪些?
- 2024-10-31 一文教你在Excel中利用VBA实现类似「邮件合并」的功能!
- 2024-10-31 【Excel】报表里,如何设置仅保留2位小数的万元自定义格式
- 2024-10-31 Xlookup真好用,同时查找多行多列,这个解决方法也太简单了!
- 2024-10-31 Excel问答:如何将分数转化为字母等级或中文等第(CHAR,MID,INT)
- 2024-10-31 Excel实用功能应用,多方式多条件实现数据查询,VBA代码详解
- 2024-10-31 vlookup查找数据,无法区分字母大小写咋办?这3种方法都能搞定
你 发表评论:
欢迎- 最近发表
-
- 电商后台管理系统实战:Vue3+Node.js+Redis全栈开发
- 继程序员奶爸用树莓派自制AI婴儿监视器后,网友实现远程监控
- 连载:2016年最好的JS框架和库(下)
- 2014年最优秀JavaScript编辑器大盘点
- web前端Jquery学习笔记一(web前端中js)
- 开发者必备:10款最佳JavaScript模板引擎
- iOS 17.2 SDK代码确认古尔曼爆料:免开箱更新苹果iPhone系统
- 苹果Xcode 16首个Beta版发布,AI代码补全最少需16GB内存
- 苹果发布iOS/iPadOS 18.4及macOS 15.4 Sequoia第2个公测版
- 告别千篇一律,iOS 16越狱插件K2geIsland玩转iPhone灵动岛
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)