求助:在Excel/Access中制作工程师各州PDH继续教育时长统计报表
Excel 实现方案
1. 数据预处理与关联
- 将两张数据表分别转为Excel超级表(快捷键
Ctrl+T),命名为Licenses(工程师各州许可表)和PDHRecords(PDH获取得时长表) - 进入「数据」选项卡,点击「关系」,建立两组关联:
Licenses[ENGINEER]↔PDHRecords[ENGINEER]Licenses[STATE]↔PDHRecords[STATE]
2. 计算符合条件的时长
在Licenses超级表中添加以下计算列:
- Hrs Met:
CALCULATE(SUM(PDHRecords[Qty PDH Hrs Earned]), FILTER(PDHRecords, PDHRecords[Date Hrs Earned] >= Licenses[Last Renewal Date] && PDHRecords[Date Hrs Earned] <= Licenses[Exp Date]))
(筛选出许可周期内的PDH记录,求和累计时长) - Hrs Needed:
MAX(0, Licenses[Qty PDH Hrs Reqd] - [Hrs Met])
(计算未达要求的缺口时长,负数显示为0)
3. 生成目标报表
- 插入透视表,将
ENGINEER拖至「行」区域,STATE拖至「行」区域(作为ENGINEER的子项),再将Hrs Met、Qty PDH Hrs Reqd、Hrs Needed拖至「值」区域 - 调整透视表布局,匹配你需要的层级格式即可
Access 实现方案
1. 创建关联统计查询
新建查询,添加Licenses和PDHRecords两张表,通过ENGINEER和STATE字段建立内连接。
2. 添加计算字段
在查询设计视图的「字段」行新增以下字段:
- Hrs Met:
Sum(IIf([Date Hrs Earned] Between [Last Renewal Date] And [Exp Date], [Qty PDH Hrs Earned], 0))
(仅统计许可周期内的PDH时长总和) - Hrs Needed:
Max(0, [Qty PDH Hrs Reqd] - [Hrs Met])
(计算缺口时长)
设置分组规则:按ENGINEER和STATE分组,Qty PDH Hrs Reqd的总计方式选择「第一条记录」(同一工程师同一州的许可要求唯一)。
3. 生成报表
基于上述查询创建报表,设置分组层级:先按ENGINEER分组,再按STATE分组,将Hrs Met、Qty PDH Hrs Reqd、Hrs Needed放置到细节区域,调整列宽与格式即可。
测试数据示例结果
| Hrs Met | Hrs Req'd | Hrs Needed |
|---|---|---|
| 30 | 30 | 0 |
内容的提问来源于stack exchange,提问作者SDSavage
相关产品推荐
相关产品推荐

