文字列の数字を数値で取得

Val関数を使用すると、文字列となった数字を数値として取得できます

'文字列を数値で取得する
Debug.Print Val(ActiveCell.Text)

文字列になっている数字を数値として取得するには「Val」関数を使用します
引数には文字列を指定します、取得が出来なかった場合は「0」が返されます

文字列になっている数値

文字列となっている数値は、そのままでは通常の計算を行えませんので変換する必要があります

文字列が計算できていない状態
文字列が計算されていない状態

画像を確認してください
画像のアクティブセルにはSUM関数が入力されています
引数には上のセル5つが指定されています

SUM関数の答えは「1123.456」になっています
A5はともかく、A1からA4までの合計値とは一致しません
これは、A3とA4が文字列で指定されているためです

SUM関数だけではありませんが、文字列での計算は行えません
この場合に変換が必要となり、この関数の出番がやってきます

また、この関数は「適切な型で返す」とリファレンスにあるように整数だけでなく小数点数値も対象にすることが出来ます

この関数は1文字目から読み込んでいき、数字以外の文字列が出てきた時点で読み込みを終了します

Val("10本")
→→→ 10

つまり上記のコードの様になります
A5セルの「10本」をVal関数で取得すると「本」で読み込みが終了して「10」が返されます

逆に先に数字以外の文字列が出てきた場合は数値に変換は出来ません
よくあるのが、和暦の年数取得ですが、これには使用できません

Val("令和2年")
→→→ 0

「令和2年」をVal関数で取得しても1文字目の「令」の時点で読み込みを終了するため「2」という数値が返されることはありません

Val("123.4 5 6")
→→→ 123.456

A4セルのような小数点の「.」やスペースは無視して読み込みが継続されるので、そういった文字列には対応可能です

特に注意したいのが全角数値は対応できない点です
数字であっても半角のみが対応しています
(※スペースは全角でも対応可能)
全角数字が含まれるデータを扱う場合は、事前に半角に変換する必要があります
以下の記事に半角への変換方法があります

使用場面は、画像の様に文字列入力された数字や数字の後に単位が入力されているような時に使用します

特にこの関数を知らないと、後に単位がある文字列を扱う際にMid関数で単位を除外して数字だけにして・・・と、非常に手間になるのでこの場面では非常に便利です