这是一个数组公式 。
仍以单元格A1中的数据是“123ABC”为例 。公式2可以转换为:
=0+LEFT(A1,COUNT(0+MID(A1,{1;2;3;4;5;6},1)))
转换为:
=0+LEFT(A1,COUNT(0+{“1″;”2″;”3″;”A”;”B”;”C”}))
转换为:
=0+LEFT(A1,COUNT({1;2;3;#VALUE!;#VALUE!;#VALUE!}))
COUNT函数忽略错误值,得到:
=0+LEFT(A1,3)
结果为:
123
下面,尝试一个公式2可不可以处理除字符串开头外其他位置还存在数字的情形,例如如果单元格A1中的数据是“123ABC45”,那么公式2可以转换为:
=0+LEFT(A1,COUNT(0+MID(A1,{1;2;3;4;5;6;7;8},1)))
转换为:
=0+LEFT(A1,COUNT(0+{“1″;”2″;”3″;”A”;”B”;”C”;”4″;”5″}))
转换为:
=0+LEFT(A1,COUNT({1;2;3;#VALUE!;#VALUE!;#VALUE!;4;5}))
转换为:
=0+LEFT(A1,5)
转换为:
=0+”123AB”
结果为:
#VALUE!
原因是字符串的末尾有其他数字,因此COUNT函数统计的数字个数大于字符串开头的数字个数,这样LEFT取值仍是字母数字混合的字符串 。
LEFT、MATCH与ISNUMBER
公式3:
=0+LEFT(A1,MATCH(FALSE,ISNUMBER(0+MID(A1,ROW(INDIRECT(“1:”& LEN(A1))),1)),0)-1)
这是一个数组公式 。
仍以单元格A1中的数据为“123ABC”,公式3可转换为:
=0+LEFT(A1,MATCH(FALSE,ISNUMBER({1;2;3;#VALUE!;#VALUE!;#VALUE!}),0)-1)
对于ISNUMBER函数来说,传递给它的如果是错误值则返回FALSE,因此上述公式可转换为:
=0+LEFT(A1,MATCH(FALSE,{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE},0)-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,3)
结果为:
123
在公式3中,MATCH/ISNUMBER组合确保字符串中除开头以外的数字不会影响最终的结果 。例如如果单元格A1中的数据是“123ABC45”,那么公式3可以转换为:
=0+LEFT(A1,MATCH(FALSE,ISNUMBER({1;2;3;#VALUE!;#VALUE!;#VALUE!;4;5}),0)-1)
转换为:
=0+LEFT(A1,MATCH(FALSE,{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE},0)-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,3)
结果为:
123
LEFT、MATCH与ISERR
与公式3的构造一致,唯一的不同是使用ISERR函数代替了ISNUMBER函数,并强制返回由数字组成的数组 。
公式4:
=0+LEFT(A1,MATCH(1,0+ISERR(0+MID(A1,ROW(INDIRECT(“1:”& LEN(A1))),1)),0)-1)
这是一个数组公式 。
仍以单元格A1中的数据为“123ABC”,公式4可转换为:
=0+LEFT(A1,MATCH(1,0+ISERR({1;2;3;#VALUE!;#VALUE!;#VALUE!;4;5}),0)-1)
转换为:
=0+LEFT(A1,MATCH(1,0+{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE},0)-1)
转换为:
=0+LEFT(A1,MATCH(1,{0;0;0;1;1;1;0;0},0)-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,3)
结果为:
123
【excel从字符串中提取数字——数字位于字符串开头】与公式3一样,字符串中除开头有数字外其它部位存在数字时不影响结果 。
推荐阅读
- excel图表怎么将十进制数转换成指定进制的数
- excel从字符串中提取数字——数字位于字符串末尾
- excel图表将所有数字分别提取到不同的单元格
- excel将所有数字提取到单个单元格
- 花的起源:花到底是从什么时候出现的?
- 美国从植物中分离出天然除莠剂
- excel在主工作表中汇总多个工作表中满足条件的值
- excel公式技巧之强制返回数组的公式技术
- excel图表怎么使用公式排序
- excel数据透视表怎么填充不重复的随机整数