目次
どんなプログラムも先ずはググる!イチから作るのは最終手段!
今回表題の【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点を変更する
- Function myNo1(r As Range)→Function Numabs(r As String)
- Len(r.Value)→Len(r)
- 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
'---続く
※このように同じパターンで数値を取り出し格納していくので、利用頻度は高い。
【Excel】を無料で独学で学ぶKindle-Unlimitedのお得な活用方法
Excelを独学で学ぶにはKindle-Unlimited無料期間を有効活用するのがお得 Kindle ビジネスツールの第一歩はWordではなくExcelで文書が打てるようになることの方が大事。…
編集後記
プログラムを作る場合は、先人の知恵を拝借しよう~♡
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)
- ExcelVBAの基本構文
- セルの操作
- 関数
- ワークシート、ウィンドウの操作
- ブック操作
- データ操作
- テーブル・ピボットテーブル
- 図形
- グラフ
- ユーザーフォーム
- 印刷
- ファイルとフォルダ
- データ連携
- イベント
- バージョン・トラブルシューティング・エラー処理
- 高度なテクニック
- 索引
目次が巻頭で検索が巻末。昔のタイプの本の構成だが、索引がページでなくTipsという見出しNo.になっていて慣れるまでは検索しづらい。
Amazonレビューは★3.9
それでは、またね~😎