F020 文字列中の数字を順序を指定して抜出する関数

2019-05-19
EXCEL自作関数

 文字列から順番を指定して数値を取り出す関数です。
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

ここで紹介したコード使用による損害に対しては一切責任は負えません。