EXCEL VBA 文字列を数値に変換・単位が付いた数値を計算・数値として認識・計算(Val関数)

 

 

EXCEL VBA 文字列を数値に変換・単位が付いた数値を計算・数値として認識・計算(Val関数)

 

 

 ●はじめに

今回説明するのは、文字列として登録されている数値を計算できる数値へ変換するVal関数の使用方法を説明します。EXCELデータに数値組み合わせて単位が一緒に登録(例:10人・10円・10個など)されている場合は、数値部分も文字列として認識されています。その文字列として認識されている数値を計算する場合は、数値として認識させる必要があります。その時にVal関数を利用する事で、数値として認識させる事ができます。また、Val関数だけでは、文字列を数値として認識させるのが難しい場合は、Replace関数を使い併せる事で数値化として認識させる事ができます。それでは、サンプルプログラムを交えて順番に説明いたします。

 

●【Replace関数については、下記を参照して下さい】

EXCEL VBA Replace関数 複数の文字列の置換(セルの値・指定文字列位置・置換リスト・数式の置換)

●【Val関数、下記を参照して下さい】(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/val-function

 

 

 ●書式の説明

● Val関数を利用するには、下記の通りに設定を行います。

・ Val(文字列)

※Val関数は文字列の数値を計算できる数値に変換する事ができます。

文字列で入力
(数値)
VAL関数結果説明(内容
123,345123[ , ]カンマは、数値として認識されない。カンマ以降は無視される。
123.456123.456「 . 」ピリオドは、数値として認識される。
\123,3450[ \ ]円マークは数字として認識されない。文字列の先頭に記号・文字を入力すると変換されない。
123,456円123[ , ]カンマは、数値として認識されない。カンマ以降は無視される。
123456円123456数値の文字列の最後の文字列は無視されるので、正常に変換される。
12 34 56123456半角スペースは影響なく変換される。
1234560全角数値の文字列は変換されない。
12 34 560全角数値+半角スペースは変換されない。
1234560全角数値と半角数字の混在は、変換されない。
2022年6月14日2022日付は、最初の年のみ変換されます。文字列以降は、変換されない。
2022/6/142022日付は、最初の年のみ変換されます。文字列(記号)以降は、変換されない。
12時12分12秒12 時間は、最初の年時のみ変換されます。文字列以降は、変換されない。
12:12:1212時間は、最初の時のみ変換されます。文字列(記号)以降は、変換されない。
&HFF255[&H]16進数はそのまま10進数に変換されます。


【使用例①】

A列の文字列(数値含む)をVal関数を利用して、B列に変換結果を表示させます。

【サンプルプログラム】

 

【注意点】・Val関数の変換結果のまとめ
・数値の間に記号「,」カンマなどあると記号以降は変換されない。
・先頭に記号・文字が入力されると変換されない。⇒ 0になる。
・数値の文字列も大文字の場合は変換されない。 ⇒ 0になる。
・全角数値・全角スペースは変換されない。⇒ 0になる。

 

 

 

EXCEL VBA 文字列を数値に変換・単位が付いた数値を計算・数値として認識・計算(Val関数 + Replace関数)

 

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、文字列を数値に変換(数値として認識)するサンプルプログラムですが、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行目が終了するまで繰り返します。(①へ戻る)

 

 

 

●実行前~実行後 ※プログラム実行後、B列にはVal関数のみの処理結果を代入・C列にはVal関数+Replace関数を組み合わせた処理結果が代入されました。Val関数で処理できない部分については、Val関数とReplace関数を組み合わせる事で計算のできる数値へ変換する事ができました。
(画面クリックして拡大)

 

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。