请问excel大神这个公式什么意思? =VLOOKUP(,MID(B23,ROW($1:$99),11)*{0,1},2,)

它是提取11位的电话号码
例:快啦封疆大吏你的烦恼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, 这里 用数组函数,替换了一个单元格区域。

不用辅助列,体现了高逼格。


希望能够帮到你

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-07-21
=VLOOKUP(,MID(B23,ROW($1:$99),11)*{0,1},2,)的说明:

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))本回答被网友采纳
第2个回答  2016-07-21
和正常的用法是一样的啊。。
Vlookup第二个参数是一个二维的数组。。
MID(B23,ROW($1:$99),11) 是一个99行一列的数组。。。

MID(B23,ROW($1:$99),11)*{0,1} 变成了一个99行2列的数组了本回答被提问者采纳
相似回答