那些我常用的excel小技巧之VBA篇
在上一篇帖子里,阿卡写了常用的一些excel函数,今天,就来写一写那些工作中用到的VBA。
这里阿卡建了一个示例模板,做演示用,样子如下图:
现在,启用excel里的宏,具体做法如下:
第一步,点击选项;
第二步:选择自定义功能区,将开发工具前面的□打上√。
接下来,返回excel,按快捷键ALT+F11,打开VBA编辑器,先认识一下VBA的编辑界面,长这样:
好了,到这里,准备工作完毕,我们正式进入VBA的世界。
1、for……next基本循环
2、if……end if 判断循环
3、dir字典
接下来,看下VBA处理数据的效率,比如,阿卡常用的壳子,按名称新增工作表,代码如下:
Sub xi()
Dim sht As Worksheet
Set sht = Sheets.Add
sht.Name = "1月"
End Sub
运行一下看看效果,会在原工作表的基础上,按“1月”新建一个工作表,很简单有没有?
好,加点难度,先判断现有工作表有无重复名称,然后再按照想要的工作表名称和个数,进行新建,代码如下:
Sub cjb(str As String)
Dim i, k As Integer
Dim sht As Worksheet
For Each sht In Sheets
k = 0
If sht.Name = str Then
k = 1
End If
Next
If k = 0 Then
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = str
End If
End Sub
这算是一个完整的代码壳子,有了这个壳子,可以往里面装任何想要的数据,比如,日报周报月报,分分钟复刻成百上千张表;还有财务的三大报表数据提取,都可以用。
阿卡曾经用以上代码给行政部的小姐姐打了百十来张不同姓名的通知函,前后不用五分钟,坐着喝杯茶,等打印机打印完去取就行,现在还记得行政小姐姐感激涕零的样子,说,要不是阿卡她就得加班,之前弄这个全靠复制粘贴修改,弄了一周才做完。
接着,放一个阿卡常用的壳子,用于数据拆分,长这样:
Sub chaifenshuju()
Dim i, j, k, l As Integer
Dim sht, sht0, sht1 As Worksheet
Dim irow As Integer
Set sht0 = ActiveSheet
l = 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 = False
irow = sht0.Range("a65536").End(xlUp).Row
For i = 2 To irow
k = 0
For Each sht In Sheets
If sht.Name = sht0.Cells(i, l) Then
k = 1
End If
Next
If k = 0 Then
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = sht0.Cells(i, l)
End If
Next
For j = 2 To Sheets.Count
sht0.Range("a1:z" & irow).AutoFilter field:=l, Criteria1:=Sheets(j).Name
sht0.Range("a1:z" & irow).Copy Sheets(j).Range("a1")
Next
sht0.Range("a1:z" & irow).AutoFilter
sht0.Select
MsgBox "已处理完毕,牛逼不"
End Sub
测试一下数据,还是开始的示例模板,假如我们要按“班组”这一列进行数据拆分,从左到右数,“班组”所在是第5列,好,我们运行代码:
这里,填写5,然后点“确定”,最终效果如下:
会自动按照班组进行拆分数据,然后以班组为名称建立副本到新的工作表内,前后不超过五秒钟。
接着测试,这次我们换成按性别拆,也就是第3列:
最终效果如下:
同样的,会自动按照性别进行拆分数据,然后以性别为名称建立副本到新的工作表内,睁眼闭眼的功夫,秒秒钟完成工作,很丝滑有没有?
这里为了方便演示,阿卡用的数据很少,只有几行几列,而实际工作中遇到的数据动辄成百上千行,但对于VBA来说,处理起来都一样,这时候就体现出效率了,别人还在复制粘贴的时候,你倒杯水的功夫工作就完成了,交给别人的工作,动辄五六个小时出成果,到了你这里,半小时内搞定,试想,哪个老板能拒绝?
好了,VBA篇先写到这里,后面阿卡会写一写工作中常用的快捷键和小工具,我们下一篇帖子见。
今日以上。
其实不难的。主要能提升效率,我曾经用这个把一上午的工作量压缩到了五分钟,惊了办公室一众人。
没看懂
你好厉害👍
这个可能跟我用文字表述也有关系,也许动图会更明了。
好厉害啊
其实很简单,懂原理后就是万变不离其宗。
主要我经常用,所以熟能生巧
很佩服你可以有这么强的学习能力和一技之长,我现在和直属主管谈是否明年可以加薪以及调整职级,他说不清楚,要看整体情况。让我的直属主管为我争取一下,他都不理睬我,后来我都说明年不调整职级我要另找工作了,还是微信不睬我
学习了下拆分,高效,谢谢阿卡~
先把自己变厉害,这样主动权就在自己手中。
感谢分享
你这个厉害了,确认过眼神,是我学不会的
其实不难的。
嗯嗯