步步为营-108-Excel-一、重识Excel

  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

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次

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
自动循环50次

实例二:把工资表与工资条之间的转换

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代码

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
vba

3:数据处理后

 

实例二:把工资表与工资条之间的转换

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
vba

五、语法小结

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

原文地址:https://www.cnblogs.com/YK2012/p/13424267.html