登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oh! I see you!

Hi! ppmm~~

 
 
 

日志

 
 

Excel中多条件查找并引用数据的方法  

2009-09-11 01:18:56|  分类: Excel |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文链接:http://oicu.cc.blog.163.com/blog/static/123039471200981111856302/

本文是多对一查找,需要一对多的请看:Excel同一条件返回多个结果的查找引用

解答:

发信人: oicu (Oh! I see you!), 信区: OfficeSoft
标  题: Re: 请教:类似Vlookup的高级查找
发信站: 水木社区 (Sun Aug 16 18:21:55 2009), 站内

=LOOKUP(2,1/((A1:A3="男")*(B1:B3=28)),C1:C3)

=INDIRECT("C"&SUMPRODUCT((A1:A3="男")*(B1:B3=28)*ROW(C1:C3)))
最好的是用 INDIRECT(ADDRESS(ROW,COLUMN)) 这种形式:
=INDIRECT(ADDRESS(SUMPRODUCT((A1:A3="男")*(B1:B3=28)*ROW(C1:C3)),3))
如果C列是数字,可以直接用
=SUMPRODUCT((A1:A3="男")*(B1:B3=28)*(C1:C3))

{=INDEX(C1:C3,MATCH("男"&"28",A1:A3&B1:B3,0))}

{=VLOOKUP("男"&"28",IF({1,0},A1:A3&B1:B3,C1:C3),2,0)}

{=OFFSET(C1,SUM(IF((A1:A3="男")*(B1:B3=28),ROW(C1:C3),0))-1,0,1,1)}
Google spreadsheet在线表格只能用这种方法,上面的都无效。
列查找用COLUMN代替ROW,并和0值位置互换。

注:大括号{}表示的是数组公式,不是直接输入的!

 

问题:

发信人: On2 (Onz), 信区: OfficeSoft
标  题: 请教:类似Vlookup的高级查找
发信站: 水木社区 (Sun Aug 16 16:25:19 2009), 站内

用Vlookup,可以在一个数据阵列中,根据调节查找相应数据

但查询条件只能有一个。

如果需要用两个或多个条件进行查找,有没有什么办法?
举例:

A       B       C       D
男      28      aaa     bbb
男      27      bbb     ccc
女      28      aaa     bbb

如果需要查找:A列=男 ,B列=28的数值,返回相应的C列数值,有没有什么快捷的方法?

 

 

多条件查找公式的解释:

只解释 =LOOKUP(2,1/((A1:A3="男")*(B1:B3=28)),C1:C3)  这个公式,其他都很容易理解。

(A1:A3="男")*(B1:B3=29)
真为1,假为0,相乘后构成这种垂直向量{1;0;0}
同样的应用示例:
{=OFFSET(C1,SUM(IF((A1:A3="男")*(B1:B3=28),ROW(C1:C3),0))-1,0,1,1)}

1/((A1:A3="男")*(B1:B3=29))
倒数后,0值变成 #DIV/0!,构造错误,所以向量中就只有一个数字1啦。
(当数字被零 (0) 除时,出现错误)

=LOOKUP(2,1/((A1:A3="男")*(B1:B3=29)),C1:C3)
第一个数字写一个>=1的任意数字即可。
向下兼容的,所以查找到C列的结果为最后一个,查不到结果返回#N/A。
因为是向量形式,所以Result_vector中的值不用按升序顺序排列。




在A表里做两个搜索整个B表的测试,用复杂的3条件列:
=LOOKUP(2,1/((B!A:A=A2)*(B!B:B=B2)*(B!C:C=C2)),B!D:D)
{=VLOOKUP(A2&B2&C2,IF({1,0},B!A:A&B!B:B&B!C:C,B!D:D),2,0)}

特别注意,Excel 2003不支持A:A这种写法,必须写具体的区域,否则公式不生效(和
精简版无关)。因此建议用Excel 2007以上版本,WPS 2013也可以。永中2013打开这
2个公式的表格耗时很久(要计算),且不支持vlookup数组方式填充(即使写区域)

Excel 2003里最大区域不能写$A$1:$A$65536,会自动识别为$A:$A,进而公式失效,最
大区域从1到65535,或者从2到65536,因此可以写成这样的:
=LOOKUP(2,1/((B!$A$2:$A$65536=A2)*(B!$B$2:$B$65536=B2)*(B!$C$2:$C$65536=C2)),B!$D$2:$D$65536)
  评论这张
 
阅读(6917)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018