从文本数字无规律混合的Excel列中提出数字,只需此函数重复两次

Excel学习世界 2023-12-05 11:12:09

如何从文本和数字混合的单元格中提取出所有数字?如果文本和数字出现的位置和次数有规律,那比较好办,Ctrl+E 和 Power Query 都有智能联想功能。

如果毫无任何规律,那么今天这两个函数就能大显身手了。

案例:

将下图 1 中每个单元格中的所有数字和小数点全都提取出来,如果同一个单元格中的数字或小数点无论是否连续,提取出来都要放在同一个单元格中。

效果如下图 2 所示。

解决方案:

1. 找一个空白列作为辅助列,在其中列出要提取出来的所有数字元素。

* D2 单元格中是个小数点。

2. 在 B2 单元格中输入以下公式 --> 下拉复制公式:

=IFERROR(TEXTJOIN("",TRUE,TEXTSPLIT(A2,TEXTSPLIT(A2,$D$2:$D$12,,TRUE),,TRUE)),"")

公式中用到了两个 365 函数 TEXTSPLIT 和 TEXTJOIN,那我们先来学习一下这两个函数,再来解释公式。

TEXTSPLIT 函数

作用:使用列或行分隔符拆分文本字符串,允许跨列拆分或按行向下拆分;

语法:TEXTSPLIT(text,col_delimiter,[row_delimiter],[ignore_empty], [match_mode], [pad_with])

text:必需,要拆分的文本;

col_delimiter:标记跨列溢出文本的点的文本;

[row_delimiter]:可选,标记向下溢出文本行的点的文本;

[ignore_empty]:可选,指定为 TRUE 可以忽略连续分隔符;默认为 FALSE,将创建一个空单元格;

[match_mode]:可选,指定 1 则不区分大小写的;默认为 0,会区分大小写;

[pad_with]:可选,用于填充结果的值;默认值为 #N/A。

TEXTJOIN 函数

作用:将多个区域和/或字符串的文本组合起来,其中包括要组合的各文本值之间指定的分隔符;

语法:TEXTJOIN(delimiter, ignore_empty, text1, [text2], …)

delimiter:必需,文本字符串,或空值,或用双引号引起来的一个或多个字符,或对有效文本字符串的引用;数字也会被视为文本;

ignore_empty:必需,如果为 TRUE,则忽略空白单元格;

text1:必需,要联接的文本项;

[text2, ...]:可选,要联接的其他文本项。

公式释义:

照例,要从最里面的公式开始,一层层向外分解。

TEXTSPLIT(A2,$D$2:$D$12,,TRUE):

将 A2 单元格按 $D$2:$D$12 区域的分隔符拆分到不同的列;

也就是将数字和小数点删除,仅提取出文字;

TEXTSPLIT(A2,...,,TRUE):

在刚才的公式外面再套一个 TEXTSPLIT 函数,目的是用刚才提出来的中英文或字符作为分隔符,将 A2 单元格按列分开;

相当于上述公式的反转版,保留数字和小数点,将其他全部删除;

之所以要用两次 TEXTSPLIT 来实现,是因为在辅助列中没法列举穷尽所有文字和字符,所以采用的办法是先删除所有要提取的数字,剩下的就是不需要提取的;再一次用公式将这些不需要的全部删除;

TEXTJOIN("",TRUE,...):上面提取出的数字如果不是连续的,就会放在不同的列中,要将它们合并在同一个单元格中,就要用 TEXTJOIN 将结果联接起来,数字之间不需要分隔符;

IFERROR(...,""):最后在公式外面套上 iferror 函数,不显示错误值

* 公式中的辅助区域 $D$2:$D$12 要绝对引用。

2 阅读:157

Excel学习世界

简介:Excel 学习交流