Excel Pivot Table:如何合并两列人员数据计算员工净工时余额?
解决方法:先转换数据结构,再创建数据透视表
你的问题根源在于原始表格是宽表结构(同一类数据分多列存储:两个姓名列、两个工时列),而数据透视表需要长表结构(每一行对应一条独立的员工工时记录)。直接用计算字段无法让系统识别两个列中的同一员工,必须先转换数据格式。
步骤1:将宽表转换为长表
方法一:用Power Query批量处理(推荐大数据量)
- 选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel 2016及以后版本),进入Power Query编辑器
- 同时选中第2列(Name)+第3列(Hours (Positive))、第4列(Name)+第5列(Hours (Negative))
- 点击「转换」选项卡 → 「逆透视列」→ 「逆透视列(成对)」
- 生成
Attribute.1(姓名)、Value.1(工时)列后,重命名为Name和Hours,删除多余列,保留Date、Name、Hours - 点击「关闭并上载」,将转换后的长表导出到Excel
方法二:手动整理(适合小数据量)
- 复制原始数据的
Date、第2列Name、Hours (Positive),粘贴到新工作表空白区域 - 复制原始数据的
Date、第4列Name、Hours (Negative),粘贴到刚才的区域下方 - 确保负工时保持原有负数格式
步骤2:创建数据透视表计算净余额
- 选中转换后的长表数据
- 点击「插入」选项卡 → 「数据透视表」,选择放置位置
- 在数据透视表字段面板中:
- 将
Name拖到「行」区域 - 将
Hours拖到「值」区域(默认自动求和,结果即为员工净余额) - 可选:将
Date拖到「筛选器」区域,方便按时间段筛选统计
- 将
补充说明
基础数据示例
| 日期 | 姓名1 | 正工时 | 姓名2 | 负工时 |
|---|---|---|---|---|
| 2024/5/1 | Alice | 3 | Carlos | -2 |
| 2024/5/2 | Bob | 4 | Alice | -1 |
| 2024/5/3 | Carlos | 2 | Bob | -3 |
预期结果示例
| 姓名 | 净余额 |
|---|---|
| Alice | 2 |
| Bob | 1 |
| Carlos | 0 |
内容的提问来源于stack exchange,提问作者user1191513
相关产品推荐
相关产品推荐

