MICROSOFT

EP04. “Sales Calculator 销售额计算器”

首页 Microsoft 工具 Excel · VBA · Workbook and Worksheet Object · EP04
约 6 分钟· #EP04#Excel#Workbook and Worksheet Object
🔒 登录后可标记已读
  • 这是一个综合实例:一份工作簿里有好几张工作表,各自记录不同年份的员工销售数据
  • 这篇教你写一个程序,输入员工姓名后自动加总
  • 加总范围是这个人在所有工作表里的销售额
  • 前置知识是 For Each / For 循环、InputBox、If 判断
  • 学完能理解怎么把这些基础语法组合起来解决实际问题

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Sub Sales_Calculator()
    Dim employee As String, total As Integer, sheet As Worksheet, i As Integer

    total = 0
    employee = InputBox("Enter the employee name (case sensitive)")

    For Each sheet In Worksheets
        For i = 2 To 13
            If sheet.Cells(i, 2).Value = employee Then
                total = total + sheet.Cells(i, 3).Value
            End If
        Next i
    Next sheet

    MsgBox "Total sales of " & employee & " is " & total
End Sub

代码逻辑说明

  • total = 0:先把累计总额归零
  • employee = InputBox(...):弹出输入框,要求输入员工姓名(注意区分大小写)
  • For Each sheet In Worksheets:外层循环,遍历这份工作簿里的每一张工作表(假设每张工作表代表一年)
  • For i = 2 To 13:内层循环,遍历第 2 到 13 行(假设每张表最多 12 位员工的数据,从第 2 行开始因为第 1 行是标题)
  • If sheet.Cells(i, 2).Value = employee Then:判断第 i 行第 2 列(B 列,员工姓名)是否等于输入的名字
  • total = total + sheet.Cells(i, 3).Value:符合的话,把第 i 行第 3 列(C 列,销售额)加进总额
  • MsgBox "Total sales of " & employee & " is " & total:循环结束后显示结果

代码怎么运行

  1. 准备一份工作簿,每张工作表 B 列放员工姓名、C 列放销售额,第 2~13 行是数据
  2. Alt + F11 打开 VBA 编辑器,Insert → Module,贴入代码
  3. 回到工作表放命令按钮,绑定 Sales_Calculator
  4. 点击按钮,输入员工姓名(比如 "David"),弹窗显示这个人三年的总销售额

[截图:输入员工姓名后弹出的 MsgBox,显示 "Total sales of David is ..." 这样的总额结果]


学完你会

  • ✅ 能综合 For Each、For、If、InputBox 写出按姓名加总数据的小工具
  • ✅ 知道 Integer 有溢出风险,懂得改用 LongDouble 更保险
  • ✅ 能看出循环范围写死可能漏掉数据的坑,知道怎么避免

常见错误

  • employee 比较区分大小写,如果工作表里存的是 "David" 但输入 "david",会匹配不到,等于总额显示 0,容易误以为程序有 bug
  • total 声明成 Integer,如果销售额总和超过 Integer 上限(约 3.2 万)会溢出报错,实际使用时建议改成 Long 或 Double 更保险
  • 循环范围写死 2 To 13,如果某张工作表员工数量超过 12 人,多出来的数据不会被算进去

Sources

Blog / Website:

  1. Sales Calculator