excel 多条件查找并返回

sheet 2 有如下数据
A B C D E
1 5 50 Z KMLP KO77321
2 6 49 Q KMOP KO77322
3 5 70 Q MLPN KO77323
4 * ** Z **** * KO773**
----------------------------------------------------------------------------
在sheet 1 中有数据
A B C D
1 N
2 5 50 Z
3 6 49 Q
4 7 70 Q
5 * ** Z
-------------------------------------------------------
有如下条件
条件1: sheet2的Dx中包含sheet1的 A1中字符;
条件2: sheet2的Ax=sheet1的Ay;
条件3: sheet2的Bx>sheet1的By;
条件4: sheet2的Cx=sheet1的Cy;
-------------------------------------------------------------------------------
请教能做如下动作的函数:
查找sheet2中同时满足条件1、2、3、4的那一行(假设第x行满足),在sheet1的Dy单元格返回sheet2的Ex单元格中的数据;若不存在同时满足4个条件的行,则返回“未找到”。

请各位达人帮帮忙,有疑问请提出,答案越详细越好,有解释就更好了!谢谢!

可选用以下两种方法(以两条件为例):
1、用LOOKUP函数配合有关条件实现。
示例公式:
=LOOKUP(0,0/((sheet2!A$1:A$100=A1)*(sheet2!B$1:B$100=B1)),sheet2!C$1:C$100) 该公式“在SHEET2中查找A列B列与本表A列B列对应相同的C列值”。
其中:LOOKUP函数返回向量或数组中的数值,其语法形式有向量和数组两种,本例使用了向量形式。
向量形式的语法是:
LOOKUP(lookup_value,lookup_vector,result_vector) 参数Lookup_value为函数在第一个向量中所要查找的数值,Lookup_vector和result_vector分别为第一向量查找区域和第二向量结果区域,它们是只包含一行或一列的区域。
2、用VLOOKUP函数与IF({1,0}配合实现。
示例公式:
=VLOOKUP(A1&B1,IF({1,0},SHEET2!A$1:A$100&SHEET2!B$1:B$100,SHEET2!C$1:C$100),2,)
其中:IF({1,0},SHEET2!A$1:A$100&SHEET2!B$1:B$100,SHEET2!C$1:C$100)建立一个包含两列数据的内在数组,第一列为A列与B列值同行合并结果,第二列为C列值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-01
你的Sheet1与Sheet2的行排列顺序不是对应的吧?
问题难就难在于“条件1: sheet2的Dx中包含sheet1的 A1中字符”。
可在Sheet2中增加辅助列F列(先把包含Sheet1的A1“提”出来)
在Sheet2的F1输入
=IF(COUNT(FIND(Sheet1!A$1,D1)),Sheet1!A$1,"")
回车并向下填充
在Sheet1的D2输入
=IF(ISERROR(MATCH(A$1&A2&B2&C2,Sheet2!F$1:F$100&Sheet2!A$1:A$100&Sheet2!B$1:B$100&Sheet2!C$1:C$100,)),"未找到",INDEX(Sheet2!E:E,MATCH(A$1&A2&B2&C2,Sheet2!F$1:F$100&Sheet2!A$1:A$100&Sheet2!B$1:B$100&Sheet2!C$1:C$100,)))
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向下填充。本回答被提问者采纳
第2个回答  2011-09-14
假设你满足条件是唯一的,那可以用比较简单的做法
(条件1是不是: sheet2的Dx中包含sheet1的 Dy中字符?)

=index(sheet12e1:e100,sum((len(substitute(sheet2!d1:d100,sheet1!d1,""))=len(sheet2!d1:d100))*(sheet2!a1:a100=sheet1!a1)*(sheet2!b1:b100>sheet1!b1)*(sheet2!c1:c100>sheet1!c1))*row(sheet2!c1:c100))

CTRL+SHIFT+ENTER
第3个回答  2011-08-31
可以直接用IF函数判断。=IF(条件1满足第x行,返回某个值,IF(条件2满足第A行,返回某个值,IF(条件3满足第B行,返回某个值,IF(条件4满足第C行,返回某个值,返回另一个值))))
这样就可以了,IF函数最多不能超过七层的嵌套。超过七层的嵌套它就会容易计算出错,切忌
第4个回答  2011-08-31
d1=if(and(sheet1!a1=sheet2!a1,sheet1!b1>sheet2!b1,sheet1!c1=sheet2!c1,ISERR(SEARCH(sheet1!a1,sheet2!d1))=0),sheet2!e1,"未找到") 下拉填充