如何基于StaffDetailsTbl筛选EmployeeSalaryTbl数据,按指定学科计算月度薪资?
解决方案
Excel场景实现
筛选指定学科的薪资行数据
假设两张表通过员工ID(或唯一员工姓名)关联,StaffDetailsTbl包含员工ID、学科列,EmployeeSalaryTbl包含员工ID、Employee、Salary Start Date、Salary End Date等列。
用FILTER+XLOOKUP组合可以直接筛选出目标数据:
=FILTER(EmployeeSalaryTbl!A:D, XLOOKUP(EmployeeSalaryTbl!A:A, StaffDetailsTbl!A:A, StaffDetailsTbl!B:B, "") = "Programming")
- 逻辑:
XLOOKUP为薪资表的每个员工匹配对应学科,FILTER仅保留学科为Programming的行,返回指定的员工信息、薪资日期列。
若使用旧版Excel(无FILTER/XLOOKUP),可采用数组公式实现:
=INDEX(EmployeeSalaryTbl!A:D, SMALL(IF(XLOOKUP(EmployeeSalaryTbl!A:A, StaffDetailsTbl!A:A, StaffDetailsTbl!B:B, "")="Programming", ROW(EmployeeSalaryTbl!A:A)-ROW(EmployeeSalaryTbl!A1)+1), ROW(A1)), COLUMN(A1))
输入后按Ctrl+Shift+Enter确认,下拉、右拉填充即可获取所有筛选结果。
计算指定学科员工月度薪资总额
无需先筛选数据,直接用SUMIFS+XLOOKUP求和:
=SUMIFS(EmployeeSalaryTbl!E:E, XLOOKUP(EmployeeSalaryTbl!A:A, StaffDetailsTbl!A:A, StaffDetailsTbl!B:B, ""), "Programming")
- 假设
EmployeeSalaryTbl的E列为月度薪资额,函数自动匹配符合学科条件的员工并求和。
SQL场景实现
筛选指定学科的薪资行数据
通过INNER JOIN关联两张表,再筛选目标学科:
SELECT es.Employee, es.`Salary Start Date`, es.`Salary End Date`, es.Salary FROM EmployeeSalaryTbl es JOIN StaffDetailsTbl sd ON es.EmployeeID = sd.EmployeeID WHERE sd.Department = 'Programming';
计算指定学科员工月度薪资总额
用聚合函数SUM直接计算总额:
SELECT SUM(es.Salary) AS TotalMonthlySalary FROM EmployeeSalaryTbl es JOIN StaffDetailsTbl sd ON es.EmployeeID = sd.EmployeeID WHERE sd.Department = 'Programming';
内容的提问来源于stack exchange,提问作者Automation Monkey
相关产品推荐
相关产品推荐

