如何查找Excel双条件匹配返回值对应行的其他列数值
解决方案
方案1:基于现有写法补充双条件
你之前的公式漏了公司、年份两个限定条件,把这两个条件加到AGGREGATE的分母判断里即可,公式如下(如果你的Excel区域设置用分号做参数分隔符直接用下面的版本,否则把分号换成逗号即可):
=IFERROR(INDEX('Detail list'!$B$2:$B$1604;AGGREGATE(15;6;(ROW('Detail list'!$H$2:$H$1604)-ROW('Detail list'!$H$1))/(('Detail list'!$J$2:$J$1604=A$1)*('Detail list'!$I$2:$I$1604=A$2)*('Detail list'!$H$2:$H$1604=A3));COUNTIF($A$3:$A3;A3));"")
修改逻辑:在分母的判断逻辑里新增了公司匹配、年份匹配两个条件,三个条件同时满足才会被纳入行号筛选范围,不会匹配到其他公司或年份的同值数据。
方案2:更简洁的无重复匹配方案(推荐)
不需要通过A列的返回值反向匹配,直接复用你原来取H列的公式逻辑,把INDEX的取值区域换成你要取的列即可,比如要取B列直接写:
=IFERROR(INDEX('Detail list'!$B$2:$B$1604;SMALL(IF(1=((--(A$1='Detail list'!$J$2:$J$1604))*(--(A$2='Detail list'!$I$2:$I$1604)));ROW('Detail list'!$H$2:$H$1604)-1;"");ROW()-2));"")
这个方案和A列的取值逻辑完全对齐,直接定位到双条件匹配的对应行,完全规避了H列值重复带来的匹配错误问题,也不需要额外加COUNTIF判断,兼容性和准确性更高。如果要取其他列,只需要把INDEX的第一个参数换成对应列的范围即可,比如取C列就换成'Detail list'!$C$2:$C$1604。
补充说明
如果是365/2021及以上版本的Excel,可以直接用FILTER函数批量返回所有匹配结果,写法更简单:
=FILTER('Detail list'!$H$2:$B$1604,('Detail list'!$J$2:$J$1604=A$1)*('Detail list'!$I$2:$I$1604=A$2),"")
输入后会自动溢出所有符合条件的行,不需要下拉填充。
内容的提问来源于stack exchange,提问作者VHes
相关产品推荐
相关产品推荐

