F006 文字列から複数の数字を抜き出す関数

2019-05-13
EXCEL自作関数

 文字列から複数の数字を抜き出す関数です。文字列内に複数の数値がある場合「,」区切りで結果を表示します。文字列が付いた数字をそのままで計算式に利用したい時や複数ある数値データだけ抜き出ししたい場合に便利です。

VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法

登録されたら、シート上からユーザー関数「NumExtS」が使用できます。
使い方は 
ワークシート上で = NumExtS (文字列)の関数として使用できます。
【例】
  NumExtS (“1,500円”) → 1500
    NumExtS (“2丁目3番1号”) → 2,3,1

Function NumExtS(S)
’ 文字列から数字を抜き出す関数,数字が複数ある場合コンマ区切りで表示する
On Error GoTo EXITFUN
Dim i1 As Long
Dim i2 As Long
Dim LenS As Long
Dim N As String

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

NumExtS = N
EXITFUN:
End Function

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