整数以外を除去する処理
業務でよくある「入力値から数字だけを取り出したい」というニーズ。
例えば「社員番号は数字だけ」「電話番号は数字だけにしたい」といったケースです。
ここでは 文字列から整数以外の文字を除去するテンプレート を、初心者向けにかみ砕いて説明します。
基本の考え方
- 目的:
- 入力文字列から「0〜9」以外を削除して、整数だけを残す
- よく使う方法:
- 文字を1文字ずつ取り出して判定
Like演算子で「数字かどうか」を判定- 正規表現で数字だけ抽出
テンプレ1:ループで数字だけ残す
Function RemoveNonDigits(ByVal txt As String) As String
Dim i As Long, ch As String, result As String
result = ""
For i = 1 To Len(txt)
ch = Mid(txt, i, 1)
If ch Like "[0-9]" Then
result = result & ch
End If
Next i
RemoveNonDigits = result
End Function
Sub ExampleUse()
Dim val As String
val = "TEL:03-1234-5678"
MsgBox "元の文字列: " & val & vbCrLf & _
"数字だけ: " & RemoveNonDigits(val)
End Sub
VB- ポイント:
Mid(txt, i, 1)で1文字ずつ取り出すLike "[0-9]"で数字判定- 数字だけを
resultに追加
テンプレ2:正規表現で数字だけ抽出
Function ExtractDigitsRegex(ByVal txt As String) As String
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "[^0-9]" ' 数字以外
regex.Global = True
ExtractDigitsRegex = regex.Replace(txt, "")
End Function
Sub ExampleRegex()
Dim val As String
val = "社員番号: AB12345CD"
MsgBox "元の文字列: " & val & vbCrLf & _
"数字だけ: " & ExtractDigitsRegex(val)
End Sub
VB- ポイント:
[^0-9]→ 「数字以外」を表す正規表現regex.Replace(txt, "")で数字以外を削除
テンプレ3:整数型に変換(安全に)
Sub ConvertToInteger()
Dim val As String
val = "No.00123ABC"
Dim digits As String
digits = RemoveNonDigits(val)
If IsNumeric(digits) Then
MsgBox "整数に変換成功: " & CLng(digits)
Else
MsgBox "数字が含まれていません。"
End If
End Sub
VB- ポイント:
- 数字だけ抽出した後に
IsNumericで判定 CLngで整数型に変換
- 数字だけ抽出した後に
例題で練習
'例1:電話番号「TEL:03-1234-5678」から数字だけ取り出す
'例2:社員番号「AB12345CD」から数字だけ取り出す
'例3:抽出した数字を整数型に変換して計算に使う
VB初心者向けポイント
- ループ+Likeでシンプルに数字抽出
- 正規表現を使うと一発で数字以外を削除できる
- 抽出後はIsNumericで判定してから型変換
- 電話番号や社員番号など業務でよく使う
👉 この「整数以外除去テンプレ」を覚えておけば、Excel VBAで 文字列から数字だけを取り出し、業務で使える形に整える処理 を簡単に作成できます。
