如何在Excel 365中按分组使用XLOOKUP匹配对应值?
解决Excel 365中按NAME匹配对应CODE的XLOOKUP问题
问题根源
你当前的公式仅以CODE作为单一匹配条件,只会返回整个列中第一个符合TA或X Y的VALUE,没有关联每行的NAME,因此无法对应到DEF、JKL等其他NAME的正确值。
解决方案
需要将NAME和CODE设为双重匹配条件,让XLOOKUP针对每行的NAME,精准匹配对应CODE的VALUE。
1. 获取对应NAME的TA值(F列)
在F2单元格输入以下公式,下拉填充即可(Excel 365支持自动溢出):
=XLOOKUP(1,($A$2:$A$17=A2)*($B$2:$B$17="TA"),$C$2:$C$17,"",0)
- 逻辑:
($A$2:$A$17=A2)锁定当前行的NAME,($B$2:$B$17="TA")锁定目标CODE,两者相乘生成匹配数组,XLOOKUP找到数组中值为1的位置,返回对应VALUE。
2. 获取对应NAME的X Y值并拆分(G列)
在G2单元格输入以下公式,下拉后会自动将拆分结果填充到G、H列:
=TEXTSPLIT(XLOOKUP(1,($A$2:$A$17=A2)*($B$2:$B$17="X Y"),$C$2:$C$17,"",0)," ")
- 逻辑:先通过双重条件匹配当前NAME对应的
X Y的VALUE,再用TEXTSPLIT按空格拆分数值。
3. 动态数组批量生成(无需手动下拉)
如果想一次性生成所有行的结果,在F2单元格输入:
=XLOOKUP(1,($A$2:$A$17=A$2:$A$17)*($B$2:$B$17="TA"),$C$2:$C$17,"",0)
G2单元格输入:
=TEXTSPLIT(XLOOKUP(1,($A$2:$A$17=A$2:$A$17)*($B$2:$B$17="X Y"),$C$2:$C$17,"",0)," ")
Excel 365会自动溢出填充所有行的匹配结果。
验证示例
以DEF行为例:
- F列将返回60(DEF对应的TA值)
- G、H列将分别返回65和01(DEF对应的X Y拆分后的值)
内容的提问来源于stack exchange,提问作者Rasec Malkic
相关产品推荐
相关产品推荐

