如何用Excel公式按指定日期输出公司与基金组合及对应值(无数据填0)
问题与解决方案
原始数据
| Comp | Fund | Date | Value |
|---|---|---|---|
| A | X | 30/09/2022 | 12 |
| B | X | 30/09/2022 | 15 |
| E | X | 30/09/2022 | 31 |
| A | X | 31/12/2022 | 10 |
| B | X | 31/12/2022 | 20 |
| C | X | 31/12/2022 | 15 |
| D | Y | 31/12/2022 | 22 |
需求
仅使用公式(禁止宏、筛选或手动数据操作),针对指定日期(如单元格F1中的31/12/2022),输出所有Comp与Fund的唯一组合,对应值为该日期的记录值,无记录则返回0。示例输出如下:
| Comp | Fund | Value |
|---|---|---|
| E | X | 0 |
| A | X | 10 |
| B | X | 20 |
| C | X | 15 |
| D | Y | 22 |
用户曾尝试获取Comp与Fund的唯一组合,但未达到预期效果。
解决方案
1. 提取Comp与Fund的唯一组合
假设原始数据位于A2:D8区域(表头在A1:D1),在空白区域(如H2)输入以下动态数组公式,直接提取唯一组合:
=UNIQUE(CHOOSECOLS(A2:D8,1,2))
公式会自动生成两列结果,对应所有不重复的Comp-Fund组合,手动添加表头Comp和Fund即可。
2. 匹配指定日期的Value(无记录返回0)
动态数组版本(一次性生成所有值)
在Value列起始单元格(如J2)输入:
=BYROW(UNIQUE(CHOOSECOLS(A2:D8,1,2)),LAMBDA(row,IFERROR(XLOOKUP(INDEX(row,1)&INDEX(row,2)&$F$1,A2:A8&B2:B8&D2:D8,C2:C8,0),0)))
兼容旧版本Excel的逐行公式
在J2输入后下拉填充:
=IFERROR(XLOOKUP(H2&I2&$F$1,A2:A8&B2:B8&D2:D8,C2:C8,0),0)
公式说明
UNIQUE(CHOOSECOLS(...)):精准提取A、B列的所有唯一Comp-Fund组合,解决获取唯一组合的问题。XLOOKUP(...):将Comp、Fund、指定日期合并为匹配键,在原始数据中查找对应记录,找到则返回Value,未找到则返回0;IFERROR确保无记录时返回0。
内容的提问来源于stack exchange,提问作者Oren Pinsky
相关产品推荐
相关产品推荐

