【ExcelVBA・マクロ】Val関数の使い方|文字列を数値に変換する方法【コピペOK】

Val関数の使い方 ExcelVBA

VBAでデータを扱っていると、次のようなことはありませんか?

  • 文字列の数字を数値へ変換したい
  • 計算前に数値型へ変換したい
  • 文字列から数字だけ取得したい

このような場合は、Val関数を使うことで解決できます。
文字列から数値を取り出して数値型へ変換できる便利な関数です。

この記事では、Val関数の基本から実務での活用方法まで分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 文字列を数値へ変換できる
  • 文字列から数値だけ取得できる
  • 計算処理で活用できる

Val関数とは?

Val関数は、文字列の先頭から数値として解釈できる部分を取り出して数値へ変換する関数です。

例えば、


"123"

を変換すると、


123

という数値になります。


基本:Val関数の使い方

基本構文はこちらです。

Val(文字列)

基本例

MsgBox Val("123")

→ 123


小数も変換できる

MsgBox Val("123.45")

→ 123.45


文字が含まれていても変換できる

先頭から数値部分のみ取得します。

MsgBox Val("123ABC")

→ 123


先頭が文字の場合

MsgBox Val("ABC123")

→ 0

先頭が数値でないため0になります。


セルの値を数値へ変換する

Dim num As Double

num = Val(Range("A1").Value)

MsgBox num

計算処理で使う

Dim total As Double

total = Val("100") + Val("200")

MsgBox total

→ 300


通貨記号付きデータを変換する

MsgBox Val("1000円")

→ 1000


マイナス値も変換できる

MsgBox Val("-500")

→ -500


ValとCInt・CDblの違い

関数特徴
Val数値部分のみ取得
CInt整数へ変換
CDblDouble型へ変換

Valの場合

Val("123ABC")

→ 123

CIntの場合

CInt("123ABC")

→ エラー


実務での活用例

  • CSVデータ取込
  • 入力値の数値変換
  • 単位付きデータ処理
  • 数値計算前の変換

データ加工では非常によく使われます。


注意点

① 先頭が文字なら0になる

Val("ABC123")

→ 0


② カンマ付き数値は注意

Val("1,000")

→ 1

カンマで変換が終了します。

対処方法

Val(Replace("1,000", ",", ""))

→ 1000


③ 日付変換には向かない

日付にはDateValue関数などを使用してください。


安全な書き方(おすすめ)

Dim txt As String

txt = Range("A1").Value

If txt <> "" Then
    MsgBox Val(txt)
End If

よくあるエラーと対処法

① 思った値にならない

先頭文字やカンマが含まれていないか確認してください。

② 小数点が取得できない

文字列の形式を確認してください。

③ 計算結果がおかしい

Val変換後のデータ型を確認してください。

④ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • Valは文字列を数値へ変換する関数
  • 先頭から数値部分のみ取得する
  • CSVや入力データ処理で便利
  • CIntやCDblとの違いも理解しておく

Val関数を使いこなせるようになると、文字列データの数値変換が簡単になります。
実務でも使用頻度が高い関数なので、ぜひマスターしておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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