如何用MATCH或XLOOKUP制作不跳过行的Excel溢出数组公式
Excel溢出数组函数问题解决方案
问题1:AR列FILTER公式错位修复
原公式=FILTER(AN$6:AN$15; ISNUMBER(MATCH($AL$6:$AL$15; $AP$6:$AP$15; 0)*MATCH(AM6:AM15; AQ6:AQ15; 0)))会过滤不满足条件的行,导致结果与原行错位。替换为逐行判断的溢出公式,保留所有行位置,不满足时返回空:
=BYROW(AL6:AM15, LAMBDA(row, IF( AND( ISNUMBER(MATCH(INDEX(row, 1), AP6:AP15, 0)), ISNUMBER(MATCH(INDEX(row, 2), AQ6:AQ15, 0)) ), XLOOKUP(1, (AL6:AL15=INDEX(row,1))*(AM6:AM15=INDEX(row,2)), AN6:AN15), "" ) ))
- 逻辑:
BYROW遍历AL:AM的每一行,用INDEX提取当前行的AL、AM值,判断是否同时匹配AP、AQ列的条件;满足则用XLOOKUP返回对应AN列的值,不满足返回空,确保结果与原行一一对应。
问题2:BI列拖拽式XLOOKUP改为动态溢出(BJ列)
原拖拽公式=IFERROR(XLOOKUP(1;($BA$6:$BA$11=BG6)*($BB$6:$BB$11=BH6); $BC$6:$BC$11); "")改为溢出公式,输入到BJ6即可自动填充所有行:
=BYROW(BG6:BH11, LAMBDA(row, IFERROR( XLOOKUP(1, (BA6:BA11=INDEX(row,1))*(BB6:BB11=INDEX(row,2)), BC6:BC11), "" ) ))
- 逻辑:
BYROW遍历BG:BH的每一行,提取当前行的BG、BH值作为匹配条件,用XLOOKUP查找对应BC列的值,无匹配时返回空,实现动态溢出,无需手动下拉。
内容的提问来源于stack exchange,提问作者Minouuuu
相关产品推荐
相关产品推荐

