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