从包含混合字母数字文本的单元格中提取数字

从包含混合字母数字文本的单元格中提取数字

我有一列如下所示:

                              A

 1. Dimensions: Width: 23"Depth: 26"Height: 28"Seating Height: 14"
 2. Dimensions: Width: 46"Depth: 26"Height: 28"Seating Height: 14"

细胞

床单

我如何才能找出 A1 和 A2 中的数字数据?

我正在使用 Microsoft Excel 2013,并希望输出结果如下所示

       A    

 1. 23,26,28,14
 2. 46,26,28,14

答案1

我使用免费的正则表达式加入它在 Excel 中添加了正则表达式功能,通过它您可以获得带有正则表达式的函数:

=RegExReplace(RegExReplace(A1,"(\D)+",","),",?(.*[^,]),?","$1")

  • 内部函数将非数字转换为,
  • 外部函数删除意外的前导和尾随,s

在此处输入图片描述

答案2

下面将使用公式来实现:

=SUBSTITUTE(SUBSTITUTE(TRIM(TEXTJOIN("",FALSE,IF((CODE(MID(A1,SEQUENCE(1,LEN(A1)),1))>43)*(CODE(MID(A1,SEQUENCE(1,LEN(A1)),1))<58),MID(A1,SEQUENCE(1,LEN(A1)),1)," ")))," ",","),".,",". ")

现在我们已经有了更简单的方法TEXTJOIN()SEQUENCE()但使用旧的备用方法可以轻松实现两者的用途。

使用AND()将两个测试放在一起似乎会破坏所需的内部数组,因此我改用了旧式{array of TRUE,FALSE,TRUE,etc.} * {array of TRUE,FALSE,TRUE,etc.}方法。检查一个条件,然后使用嵌套在另一个条件检查中的结果也是一种方法,但这种方法更简单。

请注意,传统上,人们会添加一个*1,使数组包含 1 和 0,而不是 TRUE/FALSE,但结果被一个使用,IF()因此无需转换。(并且……呃……出于第二个原因,进行计算实际上会转换它们,而不需要*1。)

在末尾加上SUBSTITUTE()'s 有点蛮力。不能用 省略空格,TEXTJOIN()因为那样会在用逗号分隔多位数字值之前失去对它们的清晰分隔。

按照设置,它将保留",""-""."字符以及数字,但如果不需要","或,则将第一个值的测试更改为>44 或>45。"-"CODE()

相关内容