Val関数:文字列の中の数値の部分を数値として取得する

Val 関数は Excel VBA で用意されている関数の一つで、引数に指定した文字列の中に含まれる数値の部分を取り出して数値として取得することができます。ここでは Excel VBA における Val 関数の使い方について解説します。

(Last modified: )

Val関数の定義と使い方

Val 関数は引数に指定した文字列の中の数値の部分を取り出し数値として返します。

Val(string)

引数に指定する文字列の中で空白やタブやラインフィードを削除した上で、先頭の文字から順に数値ではない文字が現れる部分までを数値として返します。数値でない文字から始まっている場合など数値がない場合は 0 を返します。

次の例を見てください。

Debug.Print Val("123ABC")     '123
Debug.Print Val("1 2  3A")    '123
Debug.Print Val("  12AB34C")  '12
Debug.Print Val("AB1234")     '0

これらの例ではいずれも "A" という数字ではない文字が現れるまでの数値の部分を数値として取得しています。

ドル($)や桁区切りのカンマ(,)なども数値ではありません。ただし小数点のドット(.)は数値の小数点を表す文字としてそのまま取得されます。ただし 1 つの文字列の中に複数の小数点が現れた場合は 2 つ目以降のドット(.)は数値ではない文字として処理されます。

Debug.Print Val("1,234")   '1
Debug.Print Val("$1234")   '0
Debug.Print Val("12.34")   '12.34
Debug.Print Val("1.2.34")  '1.2

16 進数の数値を表す "&H" と 8 進数の数値を表す "&O" は数値の一部と見なされます。ただし先頭以外の位置で現れた場合は数値ではない文字として処理されます。 16 進数や 8 進数の数値は取得したものを表示すると 10 進数の形で表示されます。

Debug.Print Val("&HF3")      '243
Debug.Print Val("&O72")      '58
Debug.Print Val("35&HF0")    '35
Debug.Print Val("&HF3&H75")  '243

数値として処理されるのは半角文字の数値だけです。全角文字の数値などは数値ではなく文字として処理されます。

Debug.Print Val("582")  '0
Debug.Print Val("四三")    '0
サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub Val関数()
    Debug.Print Val(" 1 2 AB3")
    Debug.Print Val("\1234")
    Debug.Print Val("12.3")
    Debug.Print Val("&HFF")
    Debug.Print Val("56")
End Sub

Val関数の定義と使い方(1)

このプログラムを実行すると Val 関数を使って文字列に含まれる数値の部分を数値として取得し表示します。

Val関数の定義と使い方(2)

-- --

Excel VBA における Val 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。