设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel技巧] 类似VLOOKUP查询第N个相同值的公式

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-10 10:06:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家知道,Excel中的VLOOKUP函数可以在区域的第一列中查找指定的值,然后返回与该值同行的其他列的数据。但如果第一列中有多个相同值时,VLOOKUP函数只能返回第一个。要返回第N个相同值所对应的其他列数据,可以用下面的公式,例如数据在A2:A25区域,共有24条记录,其中与销售人员“王冬”对应的有多条记录,要查找第二个“王冬”所对应的销售额。
   
    在某个单元格中输入数据公式:
    =INDEX(D2:D25,SMALL(IF(B2:B25="王冬",ROW(1:24)),2))
    公式输入完毕按Ctrl+Shift+Enter结束,下同。公式返回“555.28”。
    如果要查找第一个“王冬”所对应的销售额,可以直接用VLOOKUP函数或类似上面的公式,如:
    =VLOOKUP("王冬",B2:D25,3,0)
    该公式输入完毕直接按回车键,或数组公式:
    =INDEX(D2:D25,MIN(IF(B2:B25="王冬",ROW(1:24))))
    公式都返回“1981.55”。但后面的公式能够向左边查询,这点VLOOKUP无法实现。如查找第一个“王冬”对应的“销售日期”:
    =INDEX(A2:A25,MIN(IF(B2:B25="王冬",ROW(1:24))))
    公式返回“2010-7-16”。
    类似地,查找倒数第二个“王冬”的销售额:
    =INDEX(D2:D25,LARGE(IF(B2:B25="王冬",ROW(1:24)),2))
    查找最后一个“王冬”的销售额:
    =INDEX(D2:D25,LARGE(IF(B2:B25="王冬",ROW(1:24)),1))
    或用LOOKUP函数,该公式输入完毕直接回车即可,无需按输入数组公式的组合键:
    =LOOKUP(1,0/(B1:B25="王冬"),D1:D25)
    两个公式都返回“639.50”。最后一个公式中,由于LOOKUP函数要求第二个参数“lookup_vector”必须以升序排列,公式的第二个参数为“0/(B1:B25="王冬")”产生一个仅包含“0”和错误值的数组,因而能够返回正确的结果。另外,由于其搜索的值为“1”,在“lookup_vector”中找不到,会返回最后一个“0”对应在“D1:D25”中的值。
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-13 07:54 , Processed in 0.205089 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表