Excel用了这么久,你真的了解她吗?通过这次系列课程,可进一步了解。
一、宏
1.1 什么是宏
一组动作的集合
1.2 加载宏选项卡
Excel=》偏好设置=》视图=》开发工具选项卡
1.3 录制宏
实例一:有一个年度统计报表(12个sheet内容格式一致),需要做以下修改
1 删除CDE列
2 将金额放在日期列的后面
3 筛选数量大于200的数据
操作步骤
1:点击【开发工具】选择(录制宏)确定
2:接下来就是常规的Excel操作,平时啥样,录制宏的时候也一样
3:三个需求操作完成后,返回到【开发工具】(停止录制)
4:使用宏:我们再去其他的sheet中,【开发工具】(宏)选中我们想要运行的宏,点击「运行」按钮即可
实例二:相对引用与绝对引用
需求:一列按照时间顺序排列的日期,把设置周一的背景色
操作:
1:先选中首个周一(A4)的单元格【开发工具】(录制宏),设置快捷
2:设置相对引用
3:常规操作设置背景色
4:选中下一个7天即A11单元格
5:结束宏的录制
6:快捷键操作
二、VBA
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Sub 弘一() ' ' 弘一 Macro ' 宏由 A02985 录制,时间: 2020/08/04 ' ' With Selection.Interior .Pattern = xlPatternSolid .ThemeColor = 5 .TintAndShade = 0 End With ActiveCell.Offset(7, 0).Range("A1").Select End Sub
三、VBA中的For循环
作用:执行重复操作
实例一:把原来的改颜色功能执行50次
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Sub 弘一() ' ' 弘一 Macro ' 宏由 A02985 录制,时间: 2020/08/04 ' ' Dim shu As Integer For shu = 1 To 50 With Selection.Interior .Pattern = xlPatternSolid .ThemeColor = 5 .TintAndShade = 0 End With ActiveCell.Offset(7, 0).Range("A1").Select Next End Sub
实例二:把工资表与工资条之间的转换
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Sub gzt() ' ' 宏1 宏 ' ' Rows("1:1").Select Dim i As Integer For i = 1 To 10 Selection.Copy ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=x1Down Next End Sub Sub gzb() Dim i As Integer Selection.Delete Shift:=xlUp For i = 1 To 9 ActiveCell.Offset(-2, 0).Rows("1:1").EntireRow.Select Selection.Delete Shift:=xlUp Next End Sub
添加按钮,并设置按钮属性
四、VBA中的IF循环
作用:执行条件判断操作
实例一:根据【性别】设置【称呼】、根据【专业类】生成【专业代号】、删除【姓名】为空的列
1:数据原型
2:编写vba代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Sub ch() Dim i As Integer For i = 26 To 1 Step -1 '处理性别 If Range("e" & i) = "男" Then Range("f" & i) = "先生" Else Range("f" & i) = "女士" End If '处理专业代号 If Range("b" & i) = "理工" Then Range("c" & i) = "lg" ElseIf Range("b" & i) = "文科" Then Range("c" & i) = "wk" Else Range("c" & i) = "cj" End If '删除姓名为空的数据行 If Range("D" & i) = "" Then Range("D" & i).Select Selection.EntireRow.Delete End If Next End Sub
3:数据处理后
实例二:把工资表与工资条之间的转换
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Sub toGZT() Dim curI As Integer Dim nextA As String nextA = Range("A" & 1) curI = 3 While nextA <> "" '如果下一个A单元格不等于空 Rows("1:1").Select '选中第一行 Selection.Copy '复制 Rows(curI & ":" & curI).Select '选中当前行 Selection.Insert Shift:=xlShiftDown '粘贴 ActiveSheet.Select Replace:=False curI = curI + 2 '向下移动两行 nextA = Range("A" & curI) Wend End Sub Sub toXZB() Dim curI As Integer Dim nextA As String nextA = Range("A" & 1) curI = 3 While nextA = "姓名" '如果下一个单元格有值“姓名” Range("A" & curI).Select '选中 Selection.EntireRow.Delete '删除 curI = curI + 1 '单元格下移 nextA = Range("A" & curI) Wend End Sub
五、语法小结
Sub ABC() ...... End Sub
Dim i
For i =1 to 10 ..... Next
IF ...... Then ..... Else End IF
IF ...... Then ..... ElseIF
Range("A"&i)
And/Or
step - 1
Exitfor