教えて!ExcelVBA!

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

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

       f:id:m_kbou:20200420124208p:plain

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

 

【目次】

 

構文

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

=======================================================================

Val(”[文字列]

=======================================================================

[説明]:

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

[記述例]:

Val("100点")

 

使い方

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

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

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

[記述例]:

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

-------------------------------------------------

Sub サンプル()

    MsgBox Val("東京都")
   
End Sub

-------------------------------------------------

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

[実行例]:

※文字列内に数値に変換できる数字が無いため、MsgBoxでは「0」が表示されます。

f:id:m_kbou:20200302100848p:plain

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

 

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

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

[記述例]:

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

-------------------------------------------------

Sub サンプル()

    MsgBox Val("100点")
   
End Sub

-------------------------------------------------

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

[実行例]:

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

f:id:m_kbou:20200302100902p:plain

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

 

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

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

[記述例]:

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

-------------------------------------------------

Sub サンプル()

    MsgBox Val("123 456 789")
   
End Sub

-------------------------------------------------

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

[実行例]:

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

f:id:m_kbou:20200302100916p:plain

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

 

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

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

[記述例]:

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

-------------------------------------------------

Sub サンプル()

    MsgBox Val("123456789")
   
End Sub

-------------------------------------------------

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

[実行例]:

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

f:id:m_kbou:20200302100848p:plain

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

 

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

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

[記述例]:

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

-------------------------------------------------

Sub サンプル()

    MsgBox Val("2020/03/01")
   
End Sub

-------------------------------------------------

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

[実行例]:

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

f:id:m_kbou:20200302101142p:plain

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

 

おわりに

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