例如,表格A1里包含"高一",B1输出1,如果是"高二",则输出2,如果是"高三",则输出3,如果是中级,则5。
=IF(a1=("*高一*","*高二*","*高三*","*中级*"),"1","2","3","5")。excel是不认的。
正确的应该是=LOOKUP(,-FIND({"高一","高二","高三","中级"},A1),{1,2,3,5})
也可以=LOOKUP(1,1/FIND({"高一","高二","高三","中级"},A1),{1,2,3,5})
现在我们详细解释一下:
第一个式子
=LOOKUP(,-FIND({"高一","高二","高三","中级"},A1),{1,2,3,5})
其实是省略了逗号前的0,完整版应该是
=LOOKUP(0,-FIND({"高一","高二","高三","中级"},A1),{1,2,3,5})
将式子进行拆分,
- 内层一

FIND({"高一","高二","高三","中级"},B4)——返回的是数组{1,#VALUE!,#VALUE!,#VALUE!}
——其含义是"高一","高二","高三","中级"分别在B4单元格文本当中的位置,没有则返回错误值。所以呈现为四列数值。
- 内层二

lookup使用的是其模糊查询的功能,LOOKUP 函数是查找lookup_value,如果 LOOKUP 函数找不到 lookup_value,则该函数会与 lookup_vector 中小于 lookup_value 的最大值进行匹配
此处使用到的是向量形式,语法是:LOOKUP(lookup_value, lookup_vector, [result_vector])
此情景下的含义就是查找0在{1,#VALUE!,#VALUE!,#VALUE!}的位置,则返回相应数组位置的数值{1,2,3,5}。所以我们加上一个负号形成-FIND({"高一";"高二";"高三";"中级"},B4),也就是查找0在{-1,#VALUE!,#VALUE!,#VALUE!}的位置,因为没有0所以查找小于0的最大值-1。我们就返回数组{1,2,3,5}中的1。
LOOKUP(1,1/FIND({"高一","高二","高三","中级"},A1),{1,2,3,5})也就显而易见了,区别在于查找1在数组{0,#VALUE!,#VALUE!,#VALUE!}的位置,所以
LOOKUP(0,1/FIND({"高一","高二","高三","中级"},A1),{1,2,3,5})也可以。
lookup函数详情功能介绍——https://support.office.com/zh-cn/article/lookup-%E5%87%BD%E6%95%B0-446d94af-663b-451d-8251-369d5e3864cb








暂无数据