【Excel】文字列から数値を取り出すExcelVBA

目次

どんなプログラムも先ずはググる!イチから作るのは最終手段!

今回表題の【Excel】文字列から数値を取り出すエクセルマクロサンプル は、

こちらのサイトからFunction myNo1(r As Range)をコピペして変更利用する。

Function myNo1(r As Range) をコピペ

このままだと、Excelシート関数としての利用になるのでVBA内で操作するには(r As Range) を(r As String)に変更し、引き数(r.Value)を(r)に変更すると、そのままVBAモジュールとして使える。myNO1をこのままシート関数として使うとなら、名前を変えて登録する。私の場合はシート関数ではほぼ使用しないので、このまま myNO1 を変更して使っているが、今回はブログの説明上ややこしくなるので、モジュール名を変えて登録する。

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

「myNo1」を変更しExcelVBAモジュールで利用可能にする

Function Numabs(r As String)
  Dim myStr As String
  Dim myN As String
  Dim i As Integer
    For i = 1 To Len(r)
        myStr = Mid(r, i, 1)
        If myStr Like "[0-9]" Then
            myN = myN & myStr
        End If
    Next i
    If IsNumeric(myN) Then
        Numabs = myN * 1
    Else
        Numabs = ""
    End If
End Function

(r.Value)のままではエラーで動かないので3点を変更する

  1. Function myNo1(r As Range)→Function Numabs(r As String)
  2. Len(r.Value)→Len(r)
  3. Mid(r.Value, i, 1) → Mid(r, i, 1)

テスト表示SUBモジュールを作る

Sub test_numabs()
     MsgBox Numabs("20191228阪神test1")
 End Sub

表示結果は”201912281”となる。

実際の使用例(一部抜粋のため、このままでは動きません)

'出走頭数
        wk_nm1 = Sheets("HEAD").Cells(RET, 6)
        'Sheets("表RH").Cells(i + 1, 11) = trim(wk_nm1)
        If Len(wk_nm1) > 0 Then
            wk_nm2 = Numabs(wk_nm1)
            Sheets("表RH").Cells(i + 1, 11) = wk_nm2
        End If
'WIN5
        wk_nm1 = Sheets("HEAD").Cells(RET, 8)
        'Sheets("表RH").Cells(i + 1, 12) = trim(wk_nm1)
        If Len(wk_nm1) > 0 Then
            wk_nm2 = Numabs(wk_nm1)
            Sheets("表RH").Cells(i + 1, 12) = wk_nm2
        End If
'---続く

※このように同じパターンで数値を取り出し格納していくので、利用頻度は高い。

編集後記

プログラム作成手順

プログラムを作る場合は、先人の知恵を拝借しよう~♡
間違っても一から作るなんてことをしない方が良い。先ずはググるんですよ!

この場合、自分で一から作るモノよりも確実にちゃんと動く。
たまに過去すぎて今のリビジョン、バージョンで動かない!ってこともあるが
それでも多少の修正で動作はするようになる。

既に筆者がテスト済みなモノを記事アップしているので、そりゃほぼ動くんだって🌞
その代わり自己責任での運用だから、あまりに知らない命令群ばかり!って時は
更に一つ一つ命令をググってある程度お動きを理解しながら動かすしかないけどねw

「よねさん」ありがとう~💗~私は、弱小ブロガーなんで届きはしないだろうが、書いておこう~♪

それでは、またね~😎

この記事を書いた人

マクロで半自動化!GO!GO!!PROGRAMMING
管理人:あどのまつり
馬齢:牡50代(後)✖1

2023年はコロナ明けでタイ旅行にいきThai!!

目次