2

私は完全に困惑しているかなり複雑なExcelタスクを持っています。PDF のページ スクレイプから 7 桁の整数を抽出しようとしていますが、問題は、テキストと、両側がさまざまな長さの他の整数の両方で囲まれる可能性があることです。唯一の一意の識別子は、それが 7 文字になることです。長さで。列は次のようになります。

A
3411491 $159
グレー5003195ツイン $1,399
ストック プラス ネイビー5020081

数式を使用して、イタリック体の 7 桁を独自のセルに出し入れするにはどうすればよいですか?

4

2 に答える 2

1

正規表現を使用する必要があります。

「Microsoft VBScript Regular Expressions 5.5」を参照する必要があります ([ツール] > [参照])。

次のコードを試してみてください。7 桁の任意のシーケンスに一致する、必要なものが得られるはずです。7 桁のシーケンスが複数ある場合、または 7 桁を超えるシーケンスが存在する可能性がある場合は、変更する必要があります。

Sub FindNumber()
' Reference: Microsoft VBScript Regular Expressions 5.5

Dim RegEx As Object ' VBScript_RegExp_55.regexp
Dim MatchCol As MatchCollection
Set RegEx = New RegExp


With RegEx
    .Pattern = "(.*)([0-9]{7})(.*)"
    .IgnoreCase = True
    .Global = True
End With

For i = 1 To 3 Step 1

    If RegEx.Test(ActiveSheet.Cells(i, 1).Value) Then


        Set MatchCol = RegEx.Execute(ActiveSheet.Cells(i, 1).Value)

        ActiveSheet.Cells(i, 2).Value = MatchCol(0).SubMatches(1)

    End If

Next i


End Sub
于 2013-07-03T17:16:24.603 に答える
0

Alt+F11 を押して、コードを空のモジュールにコピーし、[ツール]/[参照] で [Microsoft VBScript 正規表現 5.5] オプションをオンにして、次の列でこれをユーザー定義関数として使用します。

Function ExtractNum(c As String) As String
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "(\b[\d]{7}\b)|.+?"
        If .Test(c) Then ExtractNum = Application.Trim(.Replace(c, "$1 "))
    End With
End Function
于 2013-07-04T16:11:27.677 に答える