excel2007中,如何用公式对比查找两个数据表中同时满足两个条件的值,并返回相应的编号.

问题描述:

excel2007中,如何用公式对比查找两个数据表中同时满足两个条件的值,并返回相应的编号.
如图,需在表1中返回表2对应的编号.查找需同时满足2个条件:表1的A列包含表2的B列内容,表1的B列等于表2的A列内容.
另,由于数据较多,有可能出现“表1的A列包含表2的B列内容,表1的B列等于表2的A列内容”条件重复,如何检验并筛选,

1个回答 分类:综合 2014-10-11

问题解答:

我来补答
表1中C2公式:
=INDEX(表2!C:C,SUMPRODUCT(ROW(A$1:A$100)*(表2!A$1:A$100=B2)*(1-ISERR(FIND(表2!B$1:B$100,A2)))))
向下复制填充即可
再问: 哇,高手啊,谢谢您的帮忙。可否解释一下公式,index能大概理解,index里面括号里面的公式就不明白。还有该公式中index函数为何只有两个区域,谢谢您的指导。
再答: 过奖了! 首先,INDEX 索引的目标区域如果是单行或者单列的话,就可以省略一个参数。 其次,SUMPRODUCT 函数是一个数组运算函数,可以理解为,函数的每个参数都是一个数组,而函数的功能是将每个数组中的数分别对应相乘,得到一个结果数组,然后将这个结果数组中的所有元素求和,得到最终结果。 那么 SUMPRODUCT 中的参数包括: ROW(A$1:A$100),代表A1到A100的行号,也就是1、2、3...100 表2!A$1:A$100=B2,就是将表2的A1到A100分别与B2比较,相等的就是 1,不同就是 0 1-ISERR(FIND(表2!B$1:B$100,A2))) 略为复杂,首先是 FIND(表2!B$1:B$100,A2),将表2的B1到B100分别与A2对比,看是否包含在A2中,包含的就返回一个整数,不包含就返回一个错误值。而ISERR 函数对这组结果进行处理,整数转换为 0,错误值转换为 1。但我们需要的是错误值为 0,整数转换为 1,所以再用 1 减去 ISERR 的结果。 最后,将这三组数据分别对应相乘,只有表2中A列与A2相同、并且B列是包含在A1的行号,相乘的结果被保留,其他行号都变为 0,最后相加得到需要的行号。
 
 
展开全文阅读
剩余:2000