本帖最后由 佛山小老鼠 于 2016-10-26 00:59 编辑
解决vlookup函数第2参数不能直接用数组的问题 A1单元格有"你好"两字,能让"你"等于1,"好"等于2,相加显示3到其他单元格吗?
答:我也是醉了,还真是大千世界,无奇不有,奇葩问题
下面我来解释一下这个公式
=SUM((VLOOKUP(T(IF({1},MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),{"你",1;"好",2},2,)))
首先我们要把A1单元格一个一个拆分,由于A列每一个单元格字数不确定,所以要用indirect("1:"&len(A1)),这样就是动态显示了1到单元格字符的总数了,由于indirect函数返回的是单元格区域,1到多少行,然后外面嵌套一个row函数,得到={1;2},如果A1单元格有5个字,那么返回的是={1;2;3;4;5}
用mid函数一个一个拆分得到这个公式=MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1) 把这个公式抹黑,F9,得到查了vlookup函数的查找值,{"你";"好"} 可是vlookup函数第1参数不直接用数组,用T (if())转为内存数组就可以用了,如果是数字,我们就可以用N(if())转为内存数组,这样就得到了vlookup函数第1参数可以用数组了 =T(IF({1},MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))
当然你也可以直接1,不用{1},l因为我习惯数组用法 你也可以写成=T(IF(1,MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))) 最后我们来构建vlookup函数的第3参数,{"你",1;"好",2}这是2行2列的二维数组 vlookup函数第4参数,精确查找最后公式为=(VLOOKUP(T(IF({1},MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),{"你",1;"好",2},2,))把它抹黑,F9,得到{1;2},在外面嵌套一个sum函数,得到结果3 |