Vlookup只能查出第一个匹配的单元格

Gere Yeung 2009-11-21 06:52:07
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup);
Vlookup只返回第一个匹配的单元格值,
实际应用经常有合符条件的多个单元格,如:
A B C D
序号 序号 科目 成绩
1 10001 Java 80
2 10002 Java 90
3 10003 Java 90
4 10004 Java 80
5 10005 Java 76
6 10001 Database 76
7 10002 Database 78
8 10003 Database 99
9 10004 Database 100
10 10005 Database 84
加入使用=Vlookup(10001,B2:C11,3,false),
只能返回其1001的Java成绩,而不能返回1001的Database成绩:
序号 序号 科目 成绩
1 10001 Java 80

现需要返回1001的所有成绩,如:
序号 序号 科目 成绩
1 10001 Java 80
6 10001 Database 76

我该怎么办?是不是有其他更好的公式可用,急等!!!
望各路英雄鼎力相助!
...全文
2032 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fghy 2009-11-24
  • 打赏
  • 举报
回复
按科目分成2个表,然后按B列序号VLOOKUP查到相应的成绩即可。 公式看不太懂。。 类似情况我这是这样处理的。。。
laoyebin 2009-11-22
  • 打赏
  • 举报
回复
IF($B$1:$B$10=10001,ROW($B$1:$B$10)) 等于10001则返回行号
SMALL(IF($B$1:$B$10=10001,ROW($B$1:$B$10)),ROW()) 取返回行号的第N个值
INDEX($C$1:$C$10,SMALL(IF($B$1:$B$10=10001,ROW($B$1:$B$10)),ROW())) 取对应的值
=IF(ROW()>COUNTIF($B$1:$B$10,10001),"",INDEX($C$1:$C$10,SMALL(IF($B$1:$B$10=10001,ROW($B$1:$B$10)),ROW()))) 如果行号大于10001的个数,返回空,否则返回值
Gere Yeung 2009-11-21
  • 打赏
  • 举报
回复
好长,好复杂,请色狼解释。
laoyebin 2009-11-21
  • 打赏
  • 举报
回复
=IF(ROW()>COUNTIF($B$1:$B$10,10001),"",INDEX($C$1:$C$10,SMALL(IF($B$1:$B$10=10001,ROW($B$1:$B$10)),ROW()))) 下拉

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧