查找数字和度数符号



我有一个工作表,需要根据肘部的度对其进行分类,但其中也有很多其他材料。我用VBA。我不能只使用Like或InStr函数来搜索45,90等,因为它正在返回其他材料。我使用以下内容来查找度符号和数字,但如果它们发生在单元格中,则返回值,不一定是它们彼此相邻。如果单元格里的数据写着' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '和"数量45个90°弯头";它正在引起问题。

For Each cell In Range("A1:A5000")
If InStr(cell.Value, ChrW(176)) > 0 And cell Like "*45*" Then
cell.Offset(0,5).Value = "45 Degree"
End If
Next cell

我想我可以做一个工作,并尝试从单元格中提取信息,将其输入另一个单元格,然后搜索。但这很痛苦。什么好主意吗?

InstrLike运算符不是互斥的,这意味着您将得到"假阳性"。为什么不一个Like声明:

Sub Test()
Dim arr As Variant: arr = Array("Qty 90 of 45° elbows", "Qty 45 of 90° elbows", "Qty 90 of 145° elbows")
'Using Like expressions:
For Each el In arr
Debug.Print el Like "*45°*"
Next
'Using Regular expressions:
With CreateObject("vbscript.regexp")
.Pattern = "(?:^|D)45°(?:$|D)"
For Each el In arr
Debug.Print .Test(el)
Next
End With
End Sub

我不确定你的数据和超过99度的可能性。如果可能的话,即使使用Like,您也有误报的风险。因此,我在上面的代码中包含了一个替代方法,即使用正则表达式。

额外

:这是我的一个假设,但看起来你是在试图找到度(不仅仅是'45')并做一些计算或类似的事情?如果是这样,您也可以稍微改变一下模式:

Sub Test()
Dim arr As Variant: arr = Array("Qty 90 of 45° elbows", "Qty 45 of 90° elbows", "Qty 90 of 145° elbows")
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "^.*?(d+)°.*$"
For Each el In arr
Debug.Print Val(.Replace(el, "$1"))
Next
End With
End Sub

最新更新