教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Val関数で文字列を数値に変換する方法を教えて!

f:id:m_kbou:20200420124208p:plain

文字列を数値に変換する方法について説明します。変換するにはVal関数を使用します。

 

 

構文

記述方法は以下の通りとなります。

Val(”[文字列]”)

[説明]:

Val関数は指定した文字列を数値に変換します。変換方法として、指定された文字列の左端から数字を数値に変換し、数字以外の文字が見つかった時点で変換処理を終了します。終了時点で変換できた所までの数値を返し、数値に変換された内容が無い場合は「0」を返します。[文字列]には数値に変換したい文字列を記述し、「”」(ダブルクォーテーション)で囲みます。内容を纏めると、「[文字列]で指定した文字列を数値に変換して下さい。」との意味になります。

[記述例]:

Val("100点")

 

使い方

使い方について具体的に説明していきます。

通常文字列を変換する場合

通常の文字列を変換する場合について説明します。

[プログラミング例]:

Sub サンプル()
  MsgBox Val("東京都")
End Sub

「文字列”東京都”を数値に変換してMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210428061213p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210428061228p:plain

②結果は以下の様に表示されます。文字列内に数値に変換できる数字が無いため、MsgBoxでは「0」が表示されます。

f:id:m_kbou:20210428061241p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

通常文字列を変換する場合についての説明は以上です。

 

数字と文字が混在する文字列を変換する場合

数字と文字が混在する文字列を変換する場合について説明します。

[プログラミング例]:

Sub サンプル()
  MsgBox Val("100点")
End Sub

「文字列”100点”を数値に変換してMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210428061409p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210428061422p:plain

②結果は以下の様に表示されます。文字列の左端から数字を数値に変換して行き、”点”が現れた時点で処理を中止するため、変換できた数値は100となる事から、MsgBoxでは「100」が表示されます。

f:id:m_kbou:20210428061435p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

数字と文字が混在する文字列を変換する場合についての説明は以上です。

 

数字と空白が混在する文字列を変換する場合

数字と空白が混在する文字列を変換する場合について説明します。

[プログラミング例]:

Sub サンプル()
  MsgBox Val("123 456 789")
End Sub

「文字列”123 456 789”を数値に変換してMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210428061617p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210428061631p:plain

②結果は以下の様に表示されます。文字列の左端から数字を数値に変換して行きますが、変換する文字が空白の場合は無視されます。よって、数字のみが変換対象となる事から、MsgBoxでは「123456789」が表示されます。

f:id:m_kbou:20210428061643p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

数字と空白が混在する文字列を変換する場合についての説明は以上です。

 

全角数字の文字列を変換する場合

全角数字の文字列を変換する場合について説明します。

[プログラミング例]:

Sub サンプル()
  MsgBox Val("123456789")
End Sub

「文字列”123456789”を数値に変換してMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210428062048p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210428062102p:plain

②結果は以下の様に表示されます。文字列の左端から数字を数値に変換して行きますが、全角数字は数値に変換する事ができない事から、MsgBoxでは「0」が表示されます。

f:id:m_kbou:20210428062113p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

全角数字の文字列を変換する場合についての説明は以上です。

 

日付の文字列を変換する場合

日付の文字列を変換する場合について説明します。

[プログラミング例]:

Sub サンプル()
  MsgBox Val("2020/03/01")
End Sub

「文字列”2020/03/01”を数値に変換してMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210428062600p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210428062613p:plain

②結果は以下の様に表示されます。文字列の左端から数字を数値に変換して行き、”/”が現れた時点で処理を中止するため、MsgBoxでは変換できた数値の「2020」が表示されます。

f:id:m_kbou:20210428062625p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

日付の文字列を変換する場合についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はVal関数を使用した文字列を数値に変換する方法について説明しました。上記でも説明しましたが、全角の数字は数値に変換できませんので特に注意が必要です。その他、様々な文字列で変換してみるとVal関数の動きが見えてくると思います。是非試してみて下さい。