345PMC的日常挑战:如何用WPS表格精准抓取单元格内的数字信息

职场计划有古哥 2024-04-02 02:08:42

在生产计划PMC的日常业务中,物料的描述往往会包含各类数字信息,有时我们需要从中精准提取这些数字,以便进行后续的数据分析与整理工作。针对这一需求,WPS表格提供了多种提取单元格内数字的方法,具体选择哪种方法主要取决于数字在文本中的位置、排列规律等因素。接下来,古老师将通过一个实例,演示运用多种技巧实现数字提取的过程,其中最后一项方法尤为便捷高效。

案例源数据

如下图所示,单元格内包含了产品成本单价这一关键数据,以“捌拾玖元陆角肆分 ¥89.64元”的形式呈现。现需从中精确提取出数字部分,即“捌拾玖元陆角肆分”对应的数值“89.64”。在这个例子中,待处理的单元格内容混杂了文本、数字、特殊符号及空格等元素。

接下来,我们将针对上述案例,逐一演示如何灵活运用不同的文本函数组合,诸如FIND、TEXTAFTER/TEXTBEFORE、TEXTSPLIT等工具,以实现对数字的有效提取。各位用户可根据自身实际需求,借鉴不同的提取策略,以针对性地解决各自面临的问题。

TEXTAFTER+TEXTBEFORE

通过观察上图中的数字,提取数字的核心就是锁定数字的开始和结尾,刚好数字的开始是以符号“¥”开始和汉字“元”结尾。有了这个规律,就配合TEXTAFTER+TEXTBEFORE函数就可以精准提取了。

录入以下函数:

=--TEXTBEFORE(TEXTAFTER(B3,"¥"),"元")

函数释义:

TEXTAFTER(B3,"¥"):TEXTAFTER 函数用于查找指定文本之后的第一个子串。

参数1:B3,指定了要搜索的文本范围,即单元格B3的内容。

参数2:"¥",指定了查找的起始标记,即从“¥”符号之后开始提取文本。

结果:该函数会返回从“¥”符号开始直到单元格B3中下一个指定字符(此处未指定,所以默认到字符串末尾)之间的所有文本。在这个例子中,B3的内容为“捌拾玖元陆角肆分 ¥89.64元”,则TEXTAFTER函数返回的结果将是“89.64元”。

TEXTBEFORE(...,"元"):

TEXTBEFORE 函数用于查找指定文本之前的一个子串。

参数1:TEXTAFTER(B3,"¥"),这是对上一步得到的结果应用TEXTBEFORE函数,即从“89.64元”中继续提取。

参数2:"元",指定了提取的终止标记,即提取从起始位置到“元”字符出现之前的文本。

结果:该函数会返回从起始位置(在此处即“¥”符号之后)到“元”字符之间(但不包括“元”字符)的所有文本。对于上一步返回的“89.64元”,TEXTBEFORE函数将提取出“89.64”。

--:两个减号(--)连用在这里起到了强制转换的作用。在WPS中,单个负号 - 用于表示负数或执行减法运算,而连续的两个减号则是用来将文本型数字转换为真正的数值型数据。由于前面的TEXTAFTER和TEXTBEFORE操作返回的是文本格式的数字(如“89.64”),这里使用--将这个文本转换为数值型的89.64,以便于后续进行数值计算或数据分析。

结果如下图所示:

TEXTSPLIT+TAKE

除了运用上述定位法之外,还可采用关键字分列法。鉴于数字信息嵌于符号“¥”与汉字“元”之间,我们仅需针对这两处特定字符实施分列操作,最终选取并保留分列后所得的最后一列内容即可。TEXTSPLIT(B3, {"¥","元"}, , 1) 是对单元格 B3 中的文本进行拆分。

录入以下函数并向下填充:

=--TAKE(TEXTSPLIT(B3,{"¥","元"},,1),,-1)

函数释义:

第一个函数:TEXTSPLIT

{"¥","元"} 是一个包含两个分隔符的数组,表示同时以符号“¥”和“元”作为列分隔符。这意味着当遇到这两个字符之一时,文本会被分割成不同的列。

第三个参数留空(即逗号后无输入),通常用于指定行分隔符,此处未提供任何行分隔符,表示不进行行拆分。

第四个参数 1 表示返回拆分后的第一列数据,忽略其他列。

第二个参数:TAKE 函数:

TAKE(..., , -1) 对 TEXTSPLIT 的结果执行取值操作。

第一个省略号(...)代表 TEXTSPLIT 的结果,即拆分后得到的第一列数据。

第二个省略号留空,表示不指定行索引,通常用于指定要取哪几行数据,留空则默认取全部行。

-1 作为最后一个参数,表示取最后一行数据。由于 TEXTSPLIT 只返回了一列数据,这里的“行”实际上就是指这一列中的最后一个元素。

双负号 (--):将其转换为数值。

使用 TEXTSPLIT 函数以分隔符“¥”和“元”将单元格 B3 中的文本拆分为多列,并仅保留第一列数据。接着,使用 TAKE 函数从拆分后的第一列数据中提取最后一个元素,即该列中的最后一个数值字符串。最后,通过双负号 (--) 将提取出的数值字符串转换为实际的数值类型。

效果如下图所示:

REGEXP

最后一个方法虽写法简洁,但要求使用者具备一定的编程基础。目前,该函数在公式版本中尚未推出,但预计将于四月底正式发布。此函数即为正则表达式函数“REGEXP”。

录入函数:

=--REGEXP(B3,"\d.*.\d")

函数释义:

B3:表示要应用正则表达式的单元格引用,即待检查的文本字符串位于单元格B3中。

"\d.*.\d":这是一个正则表达式模式,解释如下:

\d:匹配任何一位数字(等同于 [0-9])。

.*:匹配任意数量(包括零个)的任意字符(. 代表除换行符外的任意字符,* 表示前面的字符可以重复零次或多次)。

.\d:匹配一个任意字符(.)后跟一个数字(\d)。

判断B3中的文本是否以一个数字开始,中间包含任意字符序列,然后以一个点(.)和另一个数字结束。双减号(--)进行文本转换成数值。

效果如下图:

图文看不明白,周一到周五晚上:20:00-20:30

抖音关注 “古哥计划”,古老师直播讲解

和古哥一起学习PMC生产计划运营,一辈子够不够?

0 阅读:8

职场计划有古哥

简介:感谢大家的关注