excel中的多条件vlookup设置问题

有两张表
sheet1:
A B C D
200507M 2001 7 534158
200507M 2002 8 435
200508M 2002 9 501007
200508M 2004 10 534
200509M 2005 11 33151
200509M 2006 12 453
200510M 2007 13 383
200510M 2008 14 453
200511M 2009 15 -1305

sheet2
A B C D
200508M 2002 9

以sheet2中的abc三列做条件查找sheet1中的abc三列,sheet2中d列的值既是满足三个条件后sheet1中的d列的值
我是这样写的 d4==VLOOKUP(A1&B1&C1,Sheet2!A:C,4,0)
显示#N/A
哪位高手指点一下,谢谢了!
sheet1
A B C D
200507M 2001 7 534158
200507M 2002 8 435
200508M 2002 9 501007
200508M 2004 10 534
200509M 2005 11 33151
200509M 2006 12 453
200510M 2007 13 383
200510M 2008 14 453
200511M 2009 15 -1305

sheet2
A B C D
200508M 2002 9

按照一楼这位仁兄的答案好像只查找了A1的条件
=VLOOKUP(A1&B1&C1,Sheet2!A:D,4,1)
结果是 534 后两个条件好像没有判断

出错的原因在于:sheet1的A列中没有满足匹配A1&B1&C1的记录,公式也有问题。有一种变通解决方法,供参考:
首先在sheet1中A列前插入一列,在新的一列中输入公式如=B1&C1&D1,即:使其值为原来ABC三列的连接;
然后在sheet2中使用VLOOKUP函数,如:VLOOKUP(A1&B1&C1,Sheet1!A:E,5,FALSE)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-10

vlooup函数目前不支持多条件查找,将来升级后的版本也许会增加(类似于sumif和sumifs)。

  可采用如下三种办法(三个函数)实现多条件的查找功能。

假设数据在A,B,C,D列,ABC为查找范围,D列为返回值, G1,H1和I1为查找条件。


    =SUMIFS(D:D,A:A,G1,B:B,H1,C:C,I1)

    推荐使用。该函数仅适用于查找目标为数值的情况 ,并且只有2007版本以上方支持该函数。

    =LOOKUP(1,1/((G1=A:A)*(H1=B:B)*(I1=C:C)),D:D)

    需要使用数组公式(ctrl+shift+enter)。较为简洁,03版本及以下使用显示出优势。

    =VLOOKUP(G1&H1&I1,D:E,2)

    需要增加辅助列,D列通过连字符&生成字符串(A1&B1&C1),而后查找该字符串。

第2个回答  2010-03-26
公式肯定有问题啊 我指出几点
1.你查找SHEET1表的话肯定不是A:C 而是A:D
2.结尾建议你用FALSE,没见过VLOOKUP函数结尾用0的。
还有一点3.应该是Sheet1!A:D
谢谢

写出来了。

=IF(AND(AND(Sheet1!A1:A9="200508M",Sheet1!B1:B9="2002"),Sheet1!C1:C9="9"),VLOOKUP(9,Sheet1!C1:D9,2,FALSE),"")
第3个回答  2015-06-19
VLOOKUP
在表格数组的首列查找值,并由此返回表格数组当前行中其他列的值。
VLOOKUP 中的 V 表示垂直方向。当比较值位于需要查找的数据左边的一列时,可以使用 VLOOKUP,而不用 HLOOKUP。
语法
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value 为需要在表格数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)第一列中查找的数值。Lookup_value 可以为数值或引用。若 lookup_value 小于 table_array 第一列中的最小值,VLOOKUP 将返回错误值 #N/A。
Table_array 为两列或多列数据。请使用对区域的引用或区域名称。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。不区分大小写。
Col_index_num 为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array 第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num :
小于 1,VLOOKUP 返回错误值 #VALUE!。
大于 table_array 的列数,VLOOKUP 返回错误值 #REF!。
Range_lookup 为逻辑值,指定希望 VLOOKUP 查找精确的匹配值还是近似匹配值:
如果为 TRUE 或省略,则返回精确匹配值或近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。
table_array 第一列中的值必须以升序排序;否则 VLOOKUP 可能无法返回正确的值。可以选择“数据”菜单上的“排序”命令,再选择“递增”,将这些值按升序排序。有关详细信息,请参阅默认排序次序。
如果为 FALSE,VLOOKUP 将只寻找精确匹配值。在此情况下,table_array 第一列的值不需要排序。如果 table_array 第一列中有两个或多个值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。
第4个回答  2010-03-26
刚刚想的简单了,还要重新思考一下
相似回答