文字列のダッシュの両側にある数値のみを返す方法を知っている人はいますか?
たとえば、次の文字列 "Text, 2-78, 88-100, 101" があるとします。ダッシュを識別し、数字の 1 つ (左または右) を返す方法を探しています。
最終的には、特定の数値、たとえば 75 が、文字列に示されている範囲のいずれかに該当するかどうかを確認したいと思います。理想的には、75 が "2-78" の範囲内にあることがわかります。
どんな助けでも大歓迎です!
Tools->References に移動し、「Microsoft VBScript Regular Expressions 5.5」をチェックします。次に、このようなことができます。(私はこれが良いコードではないことを知っていますが、それはアイデアです.正しいか間違っているか)。
Dim str, res As String
str = "Text, 2-78, 88-100, 101"
Dim left As Boolean
left = False
Dim re1 As New RegExp
re1.Pattern = "\d+-\d+"
re1.Global = True
Dim m, n As Match
For Each m In re1.Execute(str)
Dim re2 As New RegExp
re2.Global = False
If left Then
re2.Pattern = "\d+"
Else
re2.Pattern = "-\d+"
End If
For Each n In re2.Execute(m.Value)
res = n.Value
If Not left Then
res = Mid(res, 2, Len(str))
End If
Next
MsgBox res
Next
VBA を使用すると、さまざまな方法でこれを行うことができます。Split() 関数を使用して配列に変換します。最初にコンマを区切り記号として使用し、次にダッシュを使用するのがおそらく方法です。
そうは言っても、Excelでこれを行うための迅速で汚い方法が必要な場合(そこからマクロを記録できます)、ここでできることは次のとおりです。
ターゲット文字列をセルに貼り付けます。コンマを区切り記号として使用して、テキストを列に実行します。今持っている行をコピーし、新しいシートに貼り付けて転置します。転置された列で再度 Text to Columns を実行します。今回は区切り記号としてダッシュを使用します。これで、必要に応じて目標値と比較できる数値の列が並んで表示されます。
空白を削除するために、どこかで Trim() 関数を使用する必要があるかもしれませんが、列へのテキストがテキスト番号の代わりに数字を残すことを願っています。