如何基于pivot table的两个值从源表提取对应B列字段
解决方法:在Excel数据透视表中添加匹配A值与最小C值的B列内容
源数据
| A | B | C |
|---|---|---|
| 1 | A | 2023-01-31 |
| 4 | B | 2023-04-02 |
| 2 | C | 2023-05-02 |
| 1 | D | 2023-06-02 |
| 2 | E | 2023-01-30 |
| 3 | F | 2023-03-02 |
现有透视表
| A | Count of B | Min of C |
|---|---|---|
| 1 | 2 | 2023-01-31 |
| 2 | 2 | 2023-01-30 |
| 3 | 1 | 2023-03-02 |
| 4 | 1 | 2023-04-02 |
| Grand Total | 6 | 2023-01-30 |
目标效果
| A | Count of B | Min of C | col. B pick |
|---|---|---|---|
| 1 | 2 | 2023-01-31 | A |
| 2 | 2 | 2023-01-30 | E |
| 3 | 1 | 2023-03-02 | F |
| 4 | 1 | 2023-04-02 | B |
| Grand Total | 6 | 2023-01-30 |
方法1:透视表外添加辅助列(快速实现)
假设透视表的A列起始单元格为A10,Min of C列在C10:
Excel 365/2021及以上版本,在D10单元格输入:
=IF(A10="Grand Total","",XLOOKUP(1,($A$2:$A$7=A10)*($C$2:$C$7=C10),$B$2:$B$7,""))下拉填充到透视表所有行即可。
旧版Excel,使用数组公式(输入后按
Ctrl+Shift+Enter确认):=IF(A10="Grand Total","",INDEX($B$2:$B$7,MATCH(1,($A$2:$A$7=A10)*($C$2:$C$7=C10),0)))
方法2:修改源数据后更新透视表(更稳定)
这种方法避免透视表刷新后公式失效:
- 在源数据新增一列(比如D列),命名为
Min C Match B,在D2单元格输入:
下拉填充到所有行,此时每个A组中对应最小C值的B会被保留,其余为空。=IF(C2=MINIFS($C$2:$C$7,$A$2:$A$7,A2),B2,"") - 刷新数据透视表,将
Min C Match B字段拖到“值”区域,修改值字段设置为Max或Min(空值不影响计算,会自动提取唯一非空B值),最后将字段重命名为col. B pick。
内容的提问来源于stack exchange,提问作者arp798
相关产品推荐
相关产品推荐

