Excel 能否提取单元格中位于左边的所有数字?

图7.85中的C列包含了数值和单位,现要求在E列提取其数字,忽略单位,是否有办法一次性提取成功?

解题步骤

提取左边的数字有多种方法,每种方法各有所长。使用基础操作可以完成,使用公式也可以完成,其中公式又分多种思路。本例讲述Lookup+Left组合的思路,具体操作步骤如下:

1.选择E2,然后输入以下公式:

2.双击E2的公式,使其自动填充到E11单元格,此时计算结果如图7.86所示。

图7.86 提取每个单元格左边的数字

知识扩展

1.ROW函数用于计算单元格的行号,它的参数必须是单元格。

=ROW(G1)——结果为1,G1单元格的行号为1;

=ROW(C65536)——结果为65536;

=ROW(G1:D3)——当以普通公式的形式输入公式时,它的结果为1;当以数组公式的形式输入公式时,它的结果为{1,2,3},即选择纵向3个连续的单元格后输入公式,并按<Ctrl+Shift+Enter>键结束,若在单个单元格中输入公式只能得到G1的行号1。

由于Excel的计算精度是15位,因此本例采用ROW($1:$15)作为LEFT函数的参数提取1到15位字符,这是最通用的做法。

2.LEFT函数的功能是提取字符串左边若干位字符,其语法如下:

=LEFT("中华人民共和国",3)——计算结果为“中华人”,提取左边3位;

=LEFT(A1,ROW($1:$15)))——由于表达式“ROW($1:$15)”可以生成1到15的自然数序列,因此此公式可以提取C2单元格的左边1~15位字符。当选择纵向15个连续的单元格后输入公式,并按<Ctrl+Shift+Enter>组合键结束时可以产生15个运算结果,效果如图7.87所示。

图7.87 逐一提取左边1~15位字符

3.LOOKUP函数功能相当强大,用法也相当复杂,要完整地介绍 LOOKUP函数的用法需要10页以上。本例只用到数组形式的模糊搜索,因此仅介绍此种情况下的LOOKUP用法。

数组形式、模糊搜索条件下的LOOKUP语法如下:

第一参数是搜索对象,可以是一个字符串、一个数字,也可以是一个单元格。第二参数是一个数组或一个区域(区域的值本质上就是一个数组),LOOKUP 会在第二参数中搜索第一参数的值,如果找不到第一参数的值,那么继续搜索比它小的最大值,找到后返回该值。

使用 lOOKUP 函数时,要求其第二参数的数据源升序排序,否则查找结果可能与预期不一致。

在图7.88中,公式“=LOOKUP(15,A1:A5)”的含义是在A1:A5中查找15,由于A1:A5中刚好有一个15,因此公式结果为15;图7.89中公式“=LOOKUP(40,A1:A5)”的含义是在A1:A5中查找40,由于找不到40,继续查找比40小的最大值,数据35符合条件,因此公式的返回值是35。

图7.88 查找15并返回15

图7.89 查找40,找不到时返回比它小的最大值

4.当使用LOOKUP函数执行模糊搜索(找不到目标值就继续查找比目标小的最大值)时,为了提升公式的通用性,通常会将LOOKUP的查找目标设置为最大值10的15次方(再大就没有必要了,超出了Excel的计算精度),然后在实际搜索过程中会搜索比它小的最大值。下面的例子可以展示LOOKUP搭配LEFT函数执行模糊搜索的过程。

图7.90中展示了LEFT函数从642578中逐一提取1位、2位、3位、4位、5位和6位字符时的运算过程和结果,运算结果包含6个值;图7.91则展示LOOKUP函数从这个数值中查找10^15的过程,由于找不到目标值,因此从数组中提取一个小于目标值的最大值642578作为最终结果。

Left函数的运算结果总是文本形式的,因此要把它们当作数值去参与运算时,需要在右边添加表达式“*1”,从而将文本型数字转换成数值。

图7.90 LEFT函数逐一提取左边N位字符

图7.91 使用LOOKUP从数组中搜索10^15

5.公式“=LOOKUP(10^15,LEFT(C2,ROW($1:$15))*1)”的运算过程比较复杂,可以通过图7.92来理解公式。

图7.92 图示LOOKUP+LEFT函数的运算过程

发布者

Excel22

专为职场萌新准备的免费全面的Excel入门及提高学习网站,也可作为Excel老司机杂耍各种函数的宝典 —— Excel22.com 网址超好记

发表评论

邮箱地址不会被公开。 必填项已用*标注