向左提取函数left的用法
今天说一个文本提取函数left的用法,它是从文本字符串的第一个字符开始返回指定个数的字符。就是从字符串的左边开始提取,提取几个字符。
-01-
函数说明
看下这个函数的写法和参数,如下图所示,有2个参数。
Text 必需。 包含要提取的字符的文本字符串。
num_chars 可选。 指定要由 LEFT 提取的字符的数量。
注意:
Num_chars 必须大于或等于零。
如果 num_chars 大于文本长度,则 LEFT 返回全部文本。
如果省略 num_chars,则假定其值为 1。
left返回的结果是文本。
-02-
示例解释
在C1单元格中输入如下公式,结果为“体”。意思是在A1单元格的字符串中从左边提取1个字符。
在C1单元格中输入如下公式,结果为“体重8”。意思是在A1单元格的字符串中从左边提取3个字符。
在C1单元格中输入如下公式,结果为“体重80kg”。意思是在A1单元格的字符串中从左边提取9个字符。但A1单元格的字符一共才6个。这时,返回A1单元格全部字符。
-03-
具体应用
1.求姓“刘”的人数
下图A列中为一些姓名,求姓“刘”的有几个人。公式为C4=SUM(N(LEFT(A4:A11)="刘"))。left形成内存数组,要按ctrl+shift+enter。这个公式的意思是用left提取A4:A11这个区域的第一位,形成一个数组,然后用这个数组的值和“刘”比较。是“刘”的返回true,不是返回false。用n函数将逻辑值转化1或0。最后用sum求和就是姓“刘”的人数。
第2种方法,就是用countif通配符的用法。公式为C5=COUNTIF(A4:A11,"刘*")。意思是在A4:A11这个区域中,以“刘”开始的单元格的个数。A列我用了随机函数,所以它会自己变动。
2.提取数字
下图A列有一些字符串,要求将数字提取出来。我用了2种方法,第1种公式为B14=MAX(IFERROR(--LEFT(A14,ROW($1:$10)),))。row函数形成内存数组,三键结束。
先看LEFT(A14,ROW($1:$10))这部分,意思是从A14单元格提1位,2位,3位……一直把它提完为止,形成一个数组。由于这里字符串的字符个数比较小,我就写了提10位,如果比较多,可以提99位。
--LEFT(A14,ROW($1:$10))这部分对上面的数组进行数学运算,将文本型的数字转化数字,文本转为错误值。发现最大的数字就是我们要提取的数字。用max将其取出就可以了。但max不能忽略错误值,所以先用iferror将错误值转为0,再用max提取最大值。
第2种方法,公式为C14=LEFT(A14,MIN(IFERROR(FIND(CHAR(ROW($97:$122)),A14),""))-1)。思路也是用left提取,但是提取的位数要确定。怎么确定呢?要用到find函数。先找到第一字母的位置,然后减去1,就是要提取的位数。
CHAR(ROW($97:$122))这部分就是abc……z这26个字母。
FIND(CHAR(ROW($97:$122)),A14)这部分就是找26个字母在A14中的位置,发现最小的位置就是要找的第一个字母的位置,用min取最小值。但找不到的字母会出现错误值,所以先用iferror将错误值转化为空,再用min取最小值。最后用left就可以提取数字了。
好了,向左提取函数left就讲这么多了,你都学会了吗?由于具体例子都用到数组,所以理解起来可能比较困难。