● Val関数を利用するには、下記の通りに設定を行います。
・ Val(文字列)
※Val関数は文字列の数値を計算できる数値に変換する事ができます。
文字列で入力 (数値) | VAL関数結果 | 説明(内容 |
|---|
| 123,345 | 123 | [ , ]カンマは、数値として認識されない。カンマ以降は無視される。 |
| 123.456 | 123.456 | 「 . 」ピリオドは、数値として認識される。 |
| \123,345 | 0 | [ \ ]円マークは数字として認識されない。文字列の先頭に記号・文字を入力すると変換されない。 |
| 123,456円 | 123 | [ , ]カンマは、数値として認識されない。カンマ以降は無視される。 |
| 123456円 | 123456 | 数値の文字列の最後の文字列は無視されるので、正常に変換される。 |
| 12 34 56 | 123456 | 半角スペースは影響なく変換される。 |
| 123456 | 0 | 全角数値の文字列は変換されない。 |
| 12 34 56 | 0 | 全角数値+半角スペースは変換されない。 |
| 123456 | 0 | 全角数値と半角数字の混在は、変換されない。
|
| 2022年6月14日 | 2022 | 日付は、最初の年のみ変換されます。文字列以降は、変換されない。 |
| 2022/6/14 | 2022 | 日付は、最初の年のみ変換されます。文字列(記号)以降は、変換されない。 |
| 12時12分12秒 | 12 | 時間は、最初の年時のみ変換されます。文字列以降は、変換されない。 |
| 12:12:12 | 12 | 時間は、最初の時のみ変換されます。文字列(記号)以降は、変換されない。 |
| &HFF | 255 | [&H]16進数はそのまま10進数に変換されます。 |
【使用例①】
A列の文字列(数値含む)をVal関数を利用して、B列に変換結果を表示させます。
【サンプルプログラム】
'
'
Sub Val_Strt00() 'A列の文字列を変換して結果をB列に表示します。
Dim I As Long
Dim EX_Str
For I = 2 To 15
EX_Str = Cells(I, "A")
Cells(I, "B").Value = Val(EX_Str)
Next I
End Sub
'
【注意点】・Val関数の変換結果のまとめ
・数値の間に記号「,」カンマなどあると記号以降は変換されない。
・先頭に記号・文字が入力されると変換されない。⇒ 0になる。
・数値の文字列も大文字の場合は変換されない。 ⇒ 0になる。
・全角数値・全角スペースは変換されない。⇒ 0になる。
下記のサンプルプログラムは、文字列を数値に変換(数値として認識)するサンプルプログラムですが、Val関数とReplace関数を組み合わせた利用方法で明いたします。VAL関数だけでは、数値として認識できない場合は、Replace関数を使いVal関数では処理できない文字・記号等を消すことにより、文字列を計算のできる数値へ変換します。それでは、サンプルプログラムを交えて順番に説明いたします。
【プログラムの流れ】
① セルのデータを読み込み及び変換結果を転記するため、行の2行目~13行目まで繰り返します。
② A列のデータを「Ex_Str」へ代入します。
③ Replace関数を使い「Ex_Str」に「¥」円マークが代入されている場合は、削除します。
④ Replace関数を使い「Ex_Str」に「,」カンマが代入されている場合は、削除します。
⑤ Replace関数を使い「Ex_Str」に「年」が代入されている場合は、削除します。
⑥ Replace関数を使い「Ex_Str」に「月」が代入されている場合は、削除します。
⑦ Replace関数を使い「Ex_Str」に「日」が代入されている場合は、削除します。
⑧ Replace関数を使い「Ex_Str」に「月」が代入されている場合は、削除します。
⑨ Val関数とReplace関数の組み合わせの処理結果をC列に転記します。
⑩ 13行目が終了するまで繰り返します。(①へ戻る)