找出excel表格中的某一列中的手机号码(或者连续11位数字),并复制到后面的一列中去

现有一个excel表格中,其中一列的每个单元格都有大量文字包括一些手机号码,我现在想要找到这些手机号码(或者只要连续的11位数字即可)并复制到后面生成新的一列中,函数怎样写?写完之后怎样运行?谢谢

单元格A1中有如下内容:

 

 

 

提取Excel单元格中连续的数字的函数公式是:

=LOOKUP(9E+307,--MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890)),ROW($1:$8)))

 

 

 

解释一下这个公式

 

 

 

FIND函数——查询文本所在位置

FIND(find_text,within_text,[start_num])

FIND(需查找的文本,包含查找文本的单元格,开始查找单元格的字符位置(可选))

此处FIND函数是搜索{1,2,3,4,5,6,7,8,9,0}数字在“A1&1234567890”中所在的位置;

A1&1234567890的目的是在用FIND函数查询时,不出现错误值,使之后的MIN函数可以正常运行。

即FIND({1,2,3,4,5,6,7,8,9,0},“小王联系电话58670098负责财务1234567890”)

选取划黑后按F9,得出的位置为:{19,20,21,22,7,9,10,8,13,11}

 

 

 

MIN函数——返回列表中的最小值

MIN(number1,number2,……)

MIN(数字1,数字2,……)

将FIND所得结果{19,20,21,22,7,9,10,8,13,11}带入MIN函数,最小值所得为7,正是第一个数值出现的位置;

也正是之前FIND函数中使用A1&1234567890的原因。

 

 

 

MID函数——返回文本字符串从指定位置开始特定数目的字符,即提取某段字符。

MID(text,start_num,num_chars)

MID(被提取的文本或单元格,开始提取的字符位置,提取的字符个数)

将上述MIN函数所得带入MID(A1,7,ROW($1:$8);

ROW($1:$8)使用row函数不是用来计算行,而是借用其作为常量。当然1:8是可以修改的,只要大于数值个数就不影响结果。

 

 

 

--MID(……)中“--”的作用是将MID得出的结果变为数值,使其可以被LOOKUP函数查询到。

MID(……)选取划黑后按F9{"5";"58";"586";"5867";"58670";"586700";"5867009";"58670098"}

--MID(……)选取划黑后按F9{5;58;586;5867;58670;586700;5867009;58670098}

 

 

 

LOOKUP函数——从返回某个查询的值(数组形式)

LOOKUP(lookup_value,array)

LOOKUP(在数组中查找的值,数组范围区域)

 

很重要的一点:

如果 LOOKUP 找不到 lookup_value 的值,它会使用数组中小于或等于 lookup_value 的最大值。

LOOKUP(9E+307,……)其中9E+307指的是一个不会出现的超大值,9后面有307个0, 9E+307又可以写成9*10^307;那么此处搜索这个超大值,肯定无法找到,因此返回的内容将是小于或等于{5;58;586;5867;58670;586700;5867009;58670098}的最大值,即58670098。

 

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-04
给你一个通用程序
假定原数据在A列
B1
=-LOOKUP(,-MID(A1,ROW(INDIRECT("$1:$"&LENB(A1))),11)) 按ctrl+shift+enter结束公式输入,下拉填充本回答被提问者采纳
第2个回答  2013-03-04

要是单元格里的文字刚好也是11位?

应该是这样的吧?

第3个回答  2013-03-04
如果内容中除了汉子字母外 只有连续的11位数字 可以用一下的公式 手机号都是1开头的
假如数据在a1
=MID(A1,FIND("1",A1),11)

或者
=MIDB(A1,SEARCHB("?",A1),11)
第4个回答  2013-03-04
假设数据在A列。
B1输入公式
=if(len(a1)=11,a1,"")
下拉复制公式追问

我的数据在j列
应该在k1输入公式如下=if(len(j1)=j1,j1,"")吗?
如果是这样,没反应

追答

=if(len(j1)=11,,j1,"")

相似回答