Excel:从文本始终为#的单元格中提取文本#

Excel:从文本始终为#的单元格中提取文本#,excel,excel-formula,Excel,Excel Formula,我在单元格中有一堆文本,但许多单元格包含一些格式为#.#的文本(其中#实际上是0-9之间的数字) 我用的这个公式工作正常,但有时单元格中有垃圾导致公式返回错误信息 =MID(B7,(FIND({,“},B7,1)-1),3) 例如,有时一个单元格包含:“abc(1st.list)testing 8.7yay”。因此我以t结尾。而不是期望的8.7 有什么想法吗 谢谢大家! 这是一个用户定义的函数,当且仅当它与您描述的模式匹配时,才会返回字符串中的数字模式。如果您描述的模式不完全具有代表性,则需要提

我在单元格中有一堆文本,但许多单元格包含一些格式为#.#的文本(其中#实际上是0-9之间的数字)

我用的这个公式工作正常,但有时单元格中有垃圾导致公式返回错误信息

=MID(B7,(FIND({,“},B7,1)-1),3)

例如,有时一个单元格包含:“abc(1st.list)testing 8.7yay”。因此我以t结尾。而不是期望的8.7

有什么想法吗


谢谢大家!

这是一个用户定义的函数,当且仅当它与您描述的模式匹配时,才会返回字符串中的数字模式。如果您描述的模式不完全具有代表性,则需要提供更好的示例:

Option Explicit
Function reValue(S As String)
    Dim RE As Object, MC As Object
Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .Pattern = "\b\d\.\d\b"
    If .test(S) = True Then
        Set MC = .Execute(S)
        reValue = CDbl(MC(0))
    Else
        reValue = ""
    End If
End With
End Function

这是一个用户定义的函数,当且仅当它与您描述的模式匹配时,才会返回字符串中的数字模式。如果您描述的模式不完全具有代表性,则需要提供更好的示例:

Option Explicit
Function reValue(S As String)
    Dim RE As Object, MC As Object
Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .Pattern = "\b\d\.\d\b"
    If .test(S) = True Then
        Set MC = .Execute(S)
        reValue = CDbl(MC(0))
    Else
        reValue = ""
    End If
End With
End Function

您需要一个正则表达式来实现这一点,而我认为常规Excel没有这样的支持。您可以使用VBA用户定义函数轻松实现这一点。请参阅。您需要一个正则表达式来实现这一点,而我认为常规Excel没有这样的支持。您可以使用VBA用户定义函数轻松实现这一点。请参阅。