- Home »
- Excel講座の総目次 »
- Excel VBA入門:目次 »
- セル内の文字列から数字を取り出す
スポンサードリンク
(追記) (追記ここまで)
(追記) (追記ここまで)
はじめに
- セルに文字列が入力されていて、その中の数字だけを取り出す方法です。
数字をすべて取り出す
- セルに入力された文字列に数字0,1,2・・・,8,9が含まれていたら、その数字を変数に取り出します。
- コードは標準モジュールにユーザー定義関数として書いています。
- 【コード例A】
- Like演算子を利用しています。
-
Function myNo1(r As Range)
Dim myStr As String
Dim myN As String
Dim i As Long
For i = 1 To Len(r.Value)
myStr = Mid(r.Value, i, 1)
If myStr Like "[0-9]" Then
myN = myN & myStr
End If
Next i
If IsNumeric(myN) Then
myNo1 = myN * 1
Else
myNo1 = ""
End If
End Function
- 実行後の例
B2セルに=myno1(A2) と入力し、B6セルまでコピーします。
- 【コード例B】
(追記) (追記ここまで)
最初の数字だけを取り出す
- セルに入力された文字列に数字0,1,2・・・,8,9が含まれていたら、その数字を変数に取り出します。
ただし、数字が2組以上含まれる時は最初の数字の組を取り出します。
- コードは標準モジュールにユーザー定義関数として書いています。
- 【コード例A】
- Like演算子を利用しています。
ついでに、「.」「,」も取り出すこととします。
-
Function myNo2(r As Range)
Dim myStr As String
Dim myN As String
Dim i As Long
Dim myFlg As Boolean
myFlg = False
For i = 1 To Len(r.Value)
myStr = Mid(r.Value, i, 1)
If myStr Like "[0-9]" Then
myFlg = True
myN = myN & myStr
ElseIf myStr = "." Or myStr = "," And myFlg Then
myN = myN & myStr
ElseIf myFlg Then
Exit For
End If
Next i
If IsNumeric(myN) Then
myNo2 = myN * 1
Else
myNo2 = ""
End If
End Function
- 実行後の例
B2セルに=myno2(A2) と入力し、B6セルまでコピーします。
- 【コード例B】
- 正規表現(RegExpオブジェクト)を使ってみた例です。
- B2セルに=myno3(A2) と入力し、B6セルまでコピーします。
- [0-9,.]+ で0から9の数字または「.」「,」で始まる文字列を取り出します。
-
Function myNo4(myRng As Range)
Dim RE
Dim myStr As String
Dim match, matches
Set RE = CreateObject("VBScript.RegExp")
With RE
.Pattern = "[0-9,.]+"
.Global = False
Set matches = .Execute(myRng.Value)
myStr = ""
For Each match In matches
myStr = myStr & match.Value
Next
myNo4 = myStr * 1
End With
Set RE = Nothing
End Function
- 実行後は上と同じになります。
スポンサードリンク
(追記) (追記ここまで)
(追記) (追記ここまで)
よねさんのWordとExcelの小部屋|
Excel(エクセル) VBA入門:目次|セル内の文字列から数字を取り出す
PageViewCounter
Counter
Since2006/2/27