関数・メソッド

文字列を数値に変換する【Val関数】【ExcelVBA】

構文

Val(String)  

String・・・ 数値に変換したい文字列 [省略した場合は戻り値0] 戻り値・・・・数値(整数、小数点あり)
Stringに指定した文字列を先頭から取得し、数値以外の文字が見つかるまで文字を数値に変換します。

Val関数のサンプルコード


Public Sub test_Val()
    '■通常の使い方
    ' 先頭の文字から確認し、数字以外の文字列が出た部分までを数値として返す。
    MsgBox Val("1000円")        '1000
    MsgBox Val("2020年12月1日") '2020
    
    '■引数指定しなければ0
    MsgBox Val("")              '0
    
    '■注意
    ' ピリオドは読み込み可能だが、カンマは読み込みできない。(カンマは文字列として認識する)
    MsgBox Val("1000.50円")     '1000.50
    MsgBox Val("1,000円")       '1
    
    '   \(円マーク)は文字列として認識する
    MsgBox Val("\1000")         '0
    
    ' タブや半角スペース、全角スペースは無視する
    MsgBox Val(" 1000")            '1000
    MsgBox Val("10 00")             '1000
    MsgBox Val("1000    ")          '1000

    ' 全角文字は文字列として判断する
    MsgBox Val("1000円")       '0

    ' 16新数は数値として認識する
    MsgBox Val("&HFFFF")            '-1
End Sub

注意点

  • \(円マーク)の場合は文字列と判断されるので数値が戻ってきません。注意しましょう。
  • Webスクレイピングや他システムからデータを取得する時、データ型がLong型だと意図しない数値以外のデータが飛んできた時に、エラーになってしまう場合があります。
    その場合にString型に一度代入し、Val関数で変換する事で処理が可能です。
    但し、前述のように仕様に癖がある為、Replace関数Replaceメソッドの併用をお勧めします。

関連記事

Webで取得したデータの半角スペース削除ができない【ExcelVBA】
セル範囲の中から指定文字を置換する【Replaceメソッド】【VBA入門】
指定した文字列の中から指定文字を置換する【Replace関数】【VBA入門】

コメント

タイトルとURLをコピーしました