VBA入门必备:30个职场实用案例,轻松提升Excel数据处理效率

2026-08-25 0 阅读

在职场中,Excel作为数据处理和分析的重要工具,其高效运用对于提高工作效率至关重要。VBA(Visual Basic for Applications)是Excel的一个强大功能,可以帮助我们自动化重复性任务,提高数据处理效率。以下是30个职场实用案例,通过这些案例,你可以轻松入门VBA,并提升Excel数据处理能力。

1. 自动填充数据

案例描述:自动填充一列日期,从当前日期开始,每隔一天填充一次。

代码示例

Sub 自动填充日期()
    Dim i As Integer
    i = 2 ' 假设第一行是标题行,从第二行开始填充
    Do While Cells(i, 1).Value <> ""
        Cells(i, 1).Value = Date
        i = i + 2
    Loop
End Sub

2. 数据筛选

案例描述:根据条件自动筛选数据。

代码示例

Sub 数据筛选()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A1:C10").AutoFilter Field:=2, Criteria1:=">50"
End Sub

3. 数据排序

案例描述:根据某列数据排序。

代码示例

Sub 数据排序()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A1:C10").Sort Key1:=ws.Range("B1"), Order1:=xlAscending, Header:=xlYes
End Sub

4. 自动计算平均值

案例描述:自动计算某列的平均值。

代码示例

Sub 计算平均值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.Average(ws.Range("B1:B10"))
End Sub

5. 自动生成图表

案例描述:根据数据自动生成柱状图。

代码示例

Sub 生成图表()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    With ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225).Chart
        .SetSourceData Source:=ws.Range("A1:C10")
        .ChartType = xlColumnClustered
    End With
End Sub

6. 自动生成透视表

案例描述:根据数据自动生成透视表。

代码示例

Sub 生成透视表()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    With ws.PivotTables.Add(SourceType:=xlDatabase, SourceData:=ws.Range("A1:C10"))
        .TableRangeWidth = 3
        .TableRangeRows = 1
        .PivotFields("产品").Orientation = xlRowField
        .PivotFields("销售额").Orientation = xlDataField
    End With
End Sub

7. 自动更新数据

案例描述:自动从外部数据源更新数据。

代码示例

Sub 更新数据()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A1:C10").Value = Application.WorksheetFunction.Index(ws.ListObjects("外部数据源").DataBodyRange, 1, 1)
End Sub

8. 自动发送邮件

案例描述:自动发送包含Excel数据的邮件。

代码示例

Sub 发送邮件()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)
    OutlookMail.To = "example@example.com"
    OutlookMail.Subject = "数据报告"
    OutlookMail.Body = "请查看附件中的数据报告。"
    OutlookMail.Attachments.Add ws.FullName
    OutlookMail.Send
End Sub

9. 自动备份文件

案例描述:自动备份当前工作簿。

代码示例

Sub 备份文件()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.SaveAs Filename:="C:\备份\备份文件.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub

10. 自动生成密码

案例描述:自动生成随机密码。

代码示例

Sub 生成密码()
    Dim Password As String
    Password = ""
    For i = 1 To 8
        Password = Password & Chr(Rnd * 26 + 65)
    Next i
    MsgBox Password
End Sub

11. 自动填充公式

案例描述:自动填充公式。

代码示例

Sub 填充公式()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("B2:B10").Formula = "=SUM(A2:A10)"
End Sub

12. 自动删除空行

案例描述:自动删除工作表中空行。

代码示例

Sub 删除空行()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A1").End(xlUp).Offset(1, 0).Resize(ws.Rows.Count - 1).SpecialCells(xlCellTypeConstants).ClearContents
End Sub

13. 自动删除空列

案例描述:自动删除工作表中空列。

代码示例

Sub 删除空列()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A1").End(xlToLeft).Offset(0, 1).Resize(ws.Columns.Count - 1).SpecialCells(xlCellTypeConstants).ClearContents
End Sub

14. 自动计算最大值

案例描述:自动计算某列的最大值。

代码示例

Sub 计算最大值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.Max(ws.Range("B1:B10"))
End Sub

15. 自动计算最小值

案例描述:自动计算某列的最小值。

代码示例

Sub 计算最小值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.Min(ws.Range("B1:B10"))
End Sub

16. 自动计算标准差

案例描述:自动计算某列的标准差。

代码示例

Sub 计算标准差()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.StDev(ws.Range("B1:B10"))
End Sub

17. 自动计算方差

案例描述:自动计算某列的方差。

代码示例

Sub 计算方差()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.Var(ws.Range("B1:B10"))
End Sub

18. 自动计算排名

案例描述:自动计算某列的排名。

代码示例

Sub 计算排名()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.Rank(ws.Range("B1"), ws.Range("B1:B10"), 1)
End Sub

19. 自动计算累计值

案例描述:自动计算某列的累计值。

代码示例

Sub 计算累计值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.SumIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

20. 自动计算条件平均值

案例描述:自动计算满足条件的平均值。

代码示例

Sub 计算条件平均值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.AverageIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

21. 自动计算条件最大值

案例描述:自动计算满足条件的最大值。

代码示例

Sub 计算条件最大值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.MaxIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

22. 自动计算条件最小值

案例描述:自动计算满足条件的最小值。

代码示例

Sub 计算条件最小值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.MinIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

23. 自动计算条件标准差

案例描述:自动计算满足条件的标准差。

代码示例

Sub 计算条件标准差()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.StDevIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

24. 自动计算条件方差

案例描述:自动计算满足条件的方差。

代码示例

Sub 计算条件方差()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.VarIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"), xlPartial)
End Sub

25. 自动计算条件排名

案例描述:自动计算满足条件的排名。

代码示例

Sub 计算条件排名()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.RankIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"), 1)
End Sub

26. 自动计算条件累计值

案例描述:自动计算满足条件的累计值。

代码示例

Sub 计算条件累计值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.SumIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

27. 自动计算条件平均值

案例描述:自动计算满足条件的平均值。

代码示例

Sub 计算条件平均值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.AverageIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

28. 自动计算条件最大值

案例描述:自动计算满足条件的最大值。

代码示例

Sub 计算条件最大值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.MaxIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

29. 自动计算条件最小值

案例描述:自动计算满足条件的最小值。

代码示例

Sub 计算条件最小值()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.MinIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

30. 自动计算条件标准差

案例描述:自动计算满足条件的标准差。

代码示例

Sub 计算条件标准差()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("D1").Value = Application.WorksheetFunction.StDevIf(ws.Range("B1:B10"), ws.Range("B1:B10"), ws.Range("C1:C10"))
End Sub

通过以上30个案例,你可以轻松入门VBA,并提升Excel数据处理效率。在实际应用中,你可以根据自己的需求进行修改和扩展,让VBA更好地服务于你的工作。

分享到: