了解如何使用自定义公式和函数从 Excel 中的文本字符串中提取数字(从左侧、右侧或任意位置)。
有时您需要提取文本字符串的数字部分,使用内置的 Excel 文本相关函数几乎是不可能的。此外,如果您需要从单元格中获取一个数字并且给定的字符串包含一个数字,而不是一个 joyride。
如何从文本字符串的开头提取数字
- 使用GetFirstNumber函数。
- 添加包含字符串的输入单元格。
- 该函数将返回从左边开始的第一个数字(数值)。
GetFirstNumber函数使用正则表达式搜索字符串中的数字字符序列,并返回找到的第一个字符作为结果。
例子:
在示例中,单元格 B3 包含一个文本字符串。要提取第一个数字,请使用以下公式:
=GetFirstNumber(B3)
结果是234;该函数能够提取数字,即使它是文本值的一部分。
如果要使用内置 Excel 函数从文本字符串的开头提取数字:
您可以通过将代码插入新模块来实现下面的代码。为此,请按 Alt + F11 键打开 VBA 编辑器。粘贴代码并将工作簿保存为 xlsm 格式。
Function GetFirstNumber(str As String, Optional delim As String =", ")
Dim n As Long,nums() As Variant
Static ob1 As Object, ob2 As Object
If ob1 Is Nothing Then
Set ob1 =CreateObject("VBScript.RegExp")
End If
With ob1.Global = True
.MultiLine = False
.Pattern ="[0-9]{1,50}"
If .Test(str) Then
Set ob2 =.Execute(str)
ReDim nums(ob2.count -1)
For n =LBound(nums) To UBound(nums)nums(n)= ob2.Item(n)
Next n
If UBound(nums)>=0 Then
GetFirstNumber =nums(0)
End If
End If
End With
End Function
如何从文本字符串的末尾提取数字
- 使用 GetLastNumber 函数。
- 添加包含字符串的输入单元格。
- 该函数将返回字符串右侧的最后一个数字(数值)。
GetLastNumber函数查找输入字符串中的所有数字并返回最后一个数字。
示例:
在这种情况下,您想要从单元格 B3 中提取最后一个数字。
公式:
=GetLastNumber(B3)
该公式返回555,这是文本中的最后一个数字。
从文本字符串中获取第 n 个数字
以下是使用GetNthNumber函数从给定单元格中提取第 n 个数字的步骤。
- 键入 GetNthNumber 函数。
- 添加包含字符串的输入单元格(第一个参数)。
- 输入一个整数值 (nth) 作为第二个参数。
- 该函数将返回整个文本字符串中的第 n 个数字。
例子:
我们的目标是找到字符串中的第二个数字!使用常规 Excel 函数,公式可能会很复杂。那么,让我们看看从文本中获取第 n 个数字的优雅方法:
=GetNthNumber(B3,2)
第二个参数是 2;该公式将返回 54。
从文本字符串中提取所有数字
如果要从文本字符串中提取所有数字,请使用GETNUMBERS函数。该函数从文本字符串中提取所有数字,并将数字写入以逗号分隔的列表中。
用法:
- 键入 GETNUMBERS 函数。
- 添加包含字符串的输入单元格(第一个参数)。
- 选择您喜欢的分隔符作为第二个参数。
- 该函数将使用整个文本字符串中的逗号分隔列表返回所有数字。
例子:
最后的话
当您在 Excel 中处理复杂任务时,我们强烈建议您使用 UDF。常规函数有一些令人沮丧的限制。