关于excel中lookup函数,当要查找的值出现重复时,是按什么原则返加结果?

之前问的同样的问题莫名违规了,再问一遍。例如:用lookup函数查找一群学生中名字是张三的学生的考试分数,但是这群学生中有多个名字是张三的学生,这些张三的分数各不相同,那这样查找会按照什么原则来返还结果?我自己试了一下,发现改一下名字,张三改为小李结果又会不一样,这又是什么原因呢?

应该使用VLOOKUP函数,

具体公式为:=VLOOKUP(C1,$A$1:$B$2,2,FALSE)

有重复值的情况下,只返回第一个对应的数据。

对于有重复值的情况,可以这么处理,

如图

如有疑问可以继续交流!!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-06

一、先说下原则:

    用lookup时,为了准确地得到需要的结果,第2参数必须按升序排列,否则会得到意思不到的结果。

    第2参数是乱序,而想要到某种结果,分两种情况:

    (1)查找范围的数据具有唯一性时,可用类似如下的公式:

=LOOKUP(,0/(查找范围=查找值),返回的对应数据)

(2)查找范围中的数据有重复时,要返回最后一个与查找目标相同的,仍可用上面的公式,但某些情况下,忽略第1参数(相当于为“0”),因下面说lookup查找原理的原因,并不会返回最后一个值,这时需要把第1参数改为大于0的数字,如1;如要返回重复数据中的最前面一个,就改用:index+match的精确匹配。

二、再来简单说下lookup的查找原理:

因为lookup要求第2参数按升序排列,所以当你的数据是乱序时,它并不会感觉到是乱序的,而仍然认为是升序的。牢记这一点对理解和使用lookup是非常重要的!

既然第2参数是升序排列,为了提高查找效率,lookup查找是按二分法来查找的,即在第2参数中找到中数,与查找目标比较,如果大于查找目标,就再将第2参数的前半个部分对分后来比较;反之将后半个部分对分来比较,这样直到找到小于或等于查找目标的最大数据。对分时,如果数据个数是奇数,很好理解,就是中间一个,但当偶数时,Excel就取2个并列中间位置数据中前面一个。

有了上面的分析,来看你的问题,就很容易理解了,为什么找小李时会找到中间的,而找小张时会找到最后一个。Excel中“小李”、“小张”是如何分大小顺序的呢?是按拼音字母,小李和小张的第1个字符相同,就按第2个——“李”和“张”。

先看你的截图,接前面所说,8个数据,并列的中间2个是“小红”和“小李”,取前面的“小红”,“小红”与“小李”比较,第1个都是“小”,第2个比较,红的拼音道字母是H,李的拼音首字母是L,L在H后面,所以Excel按“升序”理解,小李在小红的后面!后面4个数据对分,中间并列是A6中的“小王”、A7中的“小绿”,取前面A6小王,王的拼音首字母W在L的后面,所以再A6的前面中对分查找,因为这时只A5一个数据了,不用对分,直接比较,正好相等,于是返回A5位置对应的B5数据。

把小李改成小张后,因为张的拼音首字母Z是字母最大的,按前述的方式逐步对分查找,最后找到了最后一个“小张”的位置。

本问题远比一个求公式的要复杂得多,是求“渔”,如果觉得解惑了,就增加些悬赏吧,哈哈。

本回答被提问者采纳
第2个回答  2020-08-06

LOOKUP要求查找的区域是已经排序的,否则找到或找不到、重复或不重复的结果都可能是错的,升序以后,重复的结果也是不确定的,具体原因请搜索二分查找算法。

第3个回答  2020-08-06

你要选中整列,她会返回最后一个值,如果区域选择的话下拉会改变区域,所以值会不一样

追答

如果你想要的是这样的效果,可以开启宏使用自定义函数

第4个回答  2020-08-06
lookup要求搜索的目标列是升序排列的,规则应该是折半查找,如果比较的数小于目标则继续折半查找前一半,如果大于则查找后一半,如果等于则顺序比较下一个数是否等于,如果等于继续往后比较,如果不等于则取当前位置
你这个不适合用lookup,建议用vlookup,然后vlookup会返回第一个符合的结果
=vlookup(c1,$a$1:$b$8,2,false)
相似回答