EP04. “Sales Calculator 销售额计算器”
🔒 登录后可标记已读- 这是一个综合实例:一份工作簿里有好几张工作表,各自记录不同年份的员工销售数据
- 这篇教你写一个程序,输入员工姓名后自动加总
- 加总范围是这个人在所有工作表里的销售额
- 前置知识是 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:循环结束后显示结果
代码怎么运行
- 准备一份工作簿,每张工作表 B 列放员工姓名、C 列放销售额,第 2~13 行是数据
Alt + F11打开 VBA 编辑器,Insert → Module,贴入代码- 回到工作表放命令按钮,绑定
Sales_Calculator - 点击按钮,输入员工姓名(比如 "David"),弹窗显示这个人三年的总销售额
[截图:输入员工姓名后弹出的 MsgBox,显示 "Total sales of David is ..." 这样的总额结果]
学完你会
- ✅ 能综合 For Each、For、If、InputBox 写出按姓名加总数据的小工具
- ✅ 知道
Integer有溢出风险,懂得改用Long或Double更保险 - ✅ 能看出循环范围写死可能漏掉数据的坑,知道怎么避免
常见错误
employee比较区分大小写,如果工作表里存的是 "David" 但输入 "david",会匹配不到,等于总额显示 0,容易误以为程序有 bugtotal声明成 Integer,如果销售额总和超过 Integer 上限(约 3.2 万)会溢出报错,实际使用时建议改成 Long 或 Double 更保险- 循环范围写死
2 To 13,如果某张工作表员工数量超过 12 人,多出来的数据不会被算进去
Sources
Blog / Website: