2017-02-24 133 views
0

我在单元格中有一堆文本,但许多单元格包含##格式的一些文本(其中#实际上是从0-9 )。Excel:从文本始终为#的单元格中提取文本#

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

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

例如,有时一个单元包含:“ABC(第一列表。)测试8.7耶”。因此,我以t结束。而不是理想的8.7。

任何想法?

谢谢!

+0

你需要一个正则表达式这一点,我不认为常规Excel有这样的支持。 –

+1

您可以使用VBA用户定义函数轻松完成此操作。 –

+0

请参见[循环访问列并检查单元格是否包含特定字符](http://stackoverflow.com/questions/42396598/loop-through-column-and-check-if-cell-contains-specific-chars/42398975#42398975 )。 – Jeeped

回答

3

这里是一个用户自定义函数,它将在字符串中返回一个数字模式,当且仅当它符合您描述的模式。如果你所描述的模式是不完全的代表,您需要提供一个更好的例子:

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 

enter image description here