Excel公式需求:根据获奖溢价债券号匹配对应购买日期
匹配获奖债券对应的购买日期公式方案
假设两张表分别命名为:
- 「购买记录」:A列=购买日期,B列=债券号起始值,C列=债券号结束值
- 「获奖记录」:A列=获奖日期,B列=获奖债券号,需在D列生成匹配的购买日期
一、Excel 365/2021及以上版本(支持动态数组)
直接用XLOOKUP或FILTER函数,无需数组按键:
XLOOKUP公式(D2单元格输入)
=XLOOKUP(TRUE, (B2>=购买记录!$B$2:$B$1000)*(B2<=购买记录!$C$2:$C$1000), 购买记录!$A$2:$A$1000, "无匹配")
FILTER公式(D2单元格输入)
=FILTER(购买记录!$A$2:$A$1000, (B2>=购买记录!$B$2:$B$1000)*(B2<=购买记录!$C$2:$C$1000), "无匹配")
逻辑:通过(B2>=起始号)*(B2<=结束号)生成布尔数组,找到符合范围的行,返回对应购买日期;无匹配时显示"无匹配"。
二、旧版Excel(2019及以下,不支持动态数组)
使用INDEX+MATCH数组公式,输入后需按Ctrl+Shift+Enter确认:
基础公式(返回#N/A如果无匹配)
=INDEX(购买记录!$A$2:$A$1000, MATCH(TRUE, (B2>=购买记录!$B$2:$B$1000)*(B2<=购买记录!$C$2:$C$1000), 0))
带错误处理的公式
=IFERROR(INDEX(购买记录!$A$2:$A$1000, MATCH(TRUE, (B2>=购买记录!$B$2:$B$1000)*(B2<=购买记录!$C$2:$C$1000), 0)), "无匹配")
逻辑:MATCH定位第一个符合范围条件的行号,INDEX提取对应日期;IFERROR处理无匹配的情况。
注意事项
- 替换公式中的
$B$2:$B$1000等范围为实际数据的有效区域,避免包含大量空行 - 确保债券号为数值格式,文本格式会导致范围判断失效
- 若同一债券号对应多个购买范围(业务上应避免),公式将返回第一个匹配的日期
内容的提问来源于stack exchange,提问作者rosanna louise
相关产品推荐
相关产品推荐

