【问题标题】:How to Extract Number with single quote in excel VBA?如何在excel VBA中用单引号提取数字?
【发布时间】:2021-04-05 00:53:04
【问题描述】:

我正在尝试从一串数据中提取长度。由于我收到的字符串集并不总是相同的,我试图找到一种方法来通过查找包含单引号或双引号的字符串来提取数据,因为我的大部分长度尺寸都是以英尺或英寸为单位。但我的代码只返回第一个数字,在这种情况下为 3。我不知道如何将 3 和 6 提取为单独的输出。
'''

data = "String-SomeString-3' 6"-AnotherStrng"

extract = Split(data, "-")

For i = 0 To UBound(extract)
    If InStr(extract(i), "'") > 0Then
        MsgBox val(extract(i))
    End If
Next i

'''

【问题讨论】:

  • 试试MsgBox extract(i) ? Val() 将缩短消息。 “Val 函数在它无法识别为数字一部分的第一个字符处停止读取字符串。”
  • 也可能是Data = "String-SomeString-3' 6""-AnotherStrng",但我想这只是一个没有真正使用的例子。

标签: excel vba numbers


【解决方案1】:

也许使用正则表达式?

Option Explicit
Sub due()
 Const data As String = "String-SomeString-3' 6""-AnotherStrng"
 Dim RE As Object, MC As Object, M As Object
 Dim S As String
 
Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .Pattern = "\d+(?=('|""))\1"
    If .test(data) = True Then
        Set MC = .Execute(data)
        For Each M In MC
            S = S & " " & M
        Next M
        Else: S = "no dimensions"
    End If
End With
MsgBox S
End Sub

【讨论】:

    【解决方案2】:

    你快到了。只需要贯彻你的想法。

    Sub Measure()
    
        Dim Data        As String
        Dim Extract()   As String
        Dim i           As Integer
        Dim Feet        As Integer
        Dim inch        As Integer
    
        Data = "String-SomeString-3' 6""""-AnotherStrng"
    
        Extract = Split(Data, "-")
        
        For i = 0 To UBound(Extract)
            If InStr(Extract(i), "'") > 0 Then
                Extract = Split(Extract(i), "'")
                If UBound(Extract) Then Feet = Val(Extract(0))
                inch = Val(Extract(UBound(Extract)))
                Exit For
            End If
        Next i
        MsgBox Feet & IIf(Feet = 1, " foot", " feet") & " and " & _
               inch & " inch" & IIf(inch = 1, ".", "es.")
    End Sub
    

    【讨论】:

    • 谢谢 Variatus。这正是我所需要的。
    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多