【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
'---続く

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

編集後記

プログラムを作る場合は、先人の知恵を拝借しよう~♡
2024.1月時点では、AIの進化により今までのように日本語解説のプログラムサンプルがない場合でも
ChatGPT , BARD , Perplexity 無料版で十分に使えるExcelVBAは書いてくれる。

ただ他の用途でもそうだとは思うが、ある程度何らかのプログラミング経験がある言語をベースにAIを使うとどの程度AIのプログラミング能力があるのか!?が分かると思われる。

Excel VBA 逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応

Excel VBA 逆引き大全 600の極意 Microsoft 365

※私が持っているのが2016年版(以下は2016)

  1. ExcelVBAの基本構文
  2. セルの操作
  3. 関数
  4. ワークシート、ウィンドウの操作
  5. ブック操作
  6. データ操作
  7. テーブル・ピボットテーブル
  8. 図形
  9. グラフ
  10. ユーザーフォーム
  11. 印刷
  12. ファイルとフォルダ
  13. データ連携
  14. イベント
  15. バージョン・トラブルシューティング・エラー処理
  16. 高度なテクニック
  17. 索引

目次が巻頭で検索が巻末。昔のタイプの本の構成だが、索引がページでなくTipsという見出しNo.になっていて慣れるまでは検索しづらい。
Amazonレビューは★3.9

私のKindle-Unlimited評価は★4

それでは、またね~😎

目次