请问excel大神这个公式什么意思? =VLOOKUP(,MID(B23,ROW($1:$99),11)*{0,1},2,)
例:快啦封疆大吏你的烦恼12345678998撒旦法啊啊是对的撒(要提取这个单元格中的数字)
公式 =VLOOKUP(,MID(B23,ROW($1:$99),11)*{0,1},2,)
结果:12345678998
请问中间的mid函数*{0.1}是取出这11位数 但是vlookup为啥和正常的用法不一样? 展开
这个公式我帮你翻译一下。
1. 他是一个数组函数,函数写完要ctrl+shift+enter 三键一起按。
按完如图在函数前后出现 { }
* 你问我数组函数是什么?请百度百科。
2. 这个函数把参数省略了些,我写全了,你再看看。
=VLOOKUP(0,MID(B23,ROW($1:$99),11)*{0,1},2,0)
VLOOKUP的第一个参数,省略一个0,第四个参数省略一个0
3. 把这段函数拆分一下,看看怎么组成的。
一个 VLOOKUP,一个 MID, 一个 ROW
三个函数都不难,很简单。
4. VLOOKUP是最外层的函数,主要看看他的四个参数。
第一个参数,找啥? 找0。( 函数里省略掉了)
第二个参数,在哪找? MID(B23,ROW($1:$99),11)*{0,1}
这部分是这个函数的重点,第二个参数肯定是一个数组,(几列,或者单元格区域)
MID(B23,ROW($1:$99),11) 返回的是 B23那段字符,1~11,2~12,3~13.................
------------------------------------------------------------------------------------
*{0,1}
*0 目的是让MID那段字符变成错误或者0
*1 目的是让MID那段字符变成错误或者数字本身。
【文本乘以数字 = 错误】
光靠文字可能不理解,上图。
G列那部分就是MID(B23,ROW($1:$99),11)
【ROW($1:$99)是因为不知道有多长随便写个足够长的99而已,
没有其他含义,当然也可以使用LEN函数,但没必要,高兴的话些9999也行。】
H,和I列就是 G列分别乘以0,1之后的结果。
整个MID(B23,ROW($1:$99),11)*{0,1} 这段函数,最终返回的就是
H列和I列。
说到这,题主可能就明白了,这个函数用辅助列的话。
可以改成=VLOOKUP(0,H:I,2,0)
第三个参数,找到之后返回第几列? 2 【没啥好说的】
第四个参数,精确查找,0【没啥好说的】
5. 通过以上的步骤,完成了VLOOKUP, 这里 用数组函数,替换了一个单元格区域。
不用辅助列,体现了高逼格。
希望能够帮到你
ROW($1:$99)是1-99共99个参数的数组。
MID(B23,ROW($1:$99),11)就是对B23单元格的字符串从第1个、第2个、第99个起提取11个字符,结果是汉字、汉字与数字、,数字、空格等组成的99个参数的数组,乘以{0,1}这个数组,把一列的数组变为两列的数组。
=VLOOKUP(,MID(B23,ROW($1:$99),11)*{0,1},2,)两个逗号前后都省略了参数,默认为0,相当于在MID(B23,ROW($1:$99),11)*{0,1}这个两列数组的第一列查找0,找到后返回其对应的第二列的参数。这个是数组公式。
不如用这个公式=LOOKUP(9E+307,--MID(B23,ROW($1:$99),11))
Vlookup第二个参数是一个二维的数组。。
MID(B23,ROW($1:$99),11) 是一个99行一列的数组。。。
MID(B23,ROW($1:$99),11)*{0,1} 变成了一个99行2列的数组了