文字列から順番を指定して数値を取り出す関数です。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「NumExtS 」が使用できます。
使い方は
ワークシート上で = NumExtS (文字列)の関数として使用できます。
【例】
NumExtS (“平成30年度50,000円”,2) → 50000
NumExtS (“第1回平成10年度30,000円”,3) → 30000
Function NumExtS(S, Optional R As Long)
’ 文字列中の数字を順序を指定して抜出する関数
On Error GoTo EXITFUN
Dim i1 As Long
Dim i2 As Long
Dim LenS As Long
Dim N As String
Dim A As Variant
If S = “” Then
NumExtS = “”
Exit Function
End If
If IsNumeric(S) = True Then
NumExtS = S
Exit Function
End If
S = StrConv(S, vbNarrow)
LenS = Len(S)
For i1 = 1 To LenS
For i2 = 0 To 9
If Mid(S, i1, 1) = i2 Then
N = N & i2
GoTo EXITFOR
End If
Next
If Mid(S, i1, 1) = “.” Then
N = N & “.”
ElseIf Mid(S, i1, 1) = “,” Then
N = N & “”
Else
N = N & “,”
End If
EXITFOR:
Next
For i = 1 To LenS
N = Replace(N, “,,”, “,”)
Next
If Left(N, 1) = “,” Then
N = Mid(N, 2, Len(N)- 1)
End If
If Right(N, 1) = “,” Then
N = Mid(N, 1, Len(N)- 1)
End If
A = Split(N, “,”)
If R = 0 Then
NumExtS = Val(A(0))
ElseIf R- 1 <= UBound(A) And R >= 1 Then
NumExtS = Val(A(R- 1))
Else
NumExtS = “”
End If
Exit Function
EXITFUN:
NumExtS = “”
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。