Excel非VBA实现:多条件匹配获取年假数据并上移至对应行
Excel非VBA实现年假数据匹配与合并方案
假设你的年假数值存储在O列(可根据实际数据替换为对应数值列),以下是具体公式实现:
1. U列:匹配当前Agent的"vacation"值
在U2单元格输入公式后下拉填充:
=IF(N2="vacation",IFERROR(XLOOKUP(1,(T:T=T2)*(N:N="vacation"),O:O),"NA"),"")
旧版Excel可使用Index/Match替代:
=IF(N2="vacation",IFERROR(INDEX(O:O,MATCH(1,(T:T=T2)*(N:N="vacation"),0)),"NA"),"")
逻辑:仅当当前行N列为"vacation"时,匹配同Agent ID对应的年假数值,无数据时返回"NA"。
2. V列:将同Agent的"prev. year vacation"值对应到"vacation"行
在V2单元格输入公式后下拉填充:
=IF(N2="vacation",IFERROR(INDEX(O:O,MATCH(1,(T:T=T2)*(N:N="prev. year vacation"),0)),"NA"),"")
如果你的数据结构中,"prev. year vacation"固定在同Agent的"vacation"行上一行,可以用更精准的上移逻辑:
=IF(N2="vacation",IF(AND(T1=T2,N1="prev. year vacation"),O1,IFERROR(XLOOKUP(1,(T:T=T2)*(N:N="prev. year vacation"),O:O),"NA")), "")
逻辑:仅当当前行是"vacation"时,匹配同Agent的上年年假数值;若上一行恰好是同Agent的"prev. year vacation"记录,直接取上一行数值,无对应数据返回"NA"。
3. 合并两年年假总额(以W列为例)
在W2单元格输入公式后下拉填充:
=IF(OR(U2="NA",V2="NA"),"NA",U2+V2)
逻辑:只要U/V列任意一方为"NA",总额返回"NA";否则返回两年年假数值之和。
注意事项
- Excel 365/2021版本使用XLOOKUP时无需额外操作;旧版Excel使用Index/Match数组公式需按
Ctrl+Shift+Enter确认输入。 - 请将公式中的
O:O替换为你实际存储年假数值的列号。
内容的提问来源于stack exchange,提问作者Lostinthesauceunfortunately
相关产品推荐
相关产品推荐

