「Excelで数字を足し算したいのに、なぜかエラーが出る」 「マクロで計算させようとしたら、変な結果になった……」
そんな経験、あなたにもありませんか? 実は、コンピュータにとって「文字の1」と「数字の1」は、全くの別物なんです。
今回は、文字として読み込まれてしまった数字を、一瞬で「計算できる本物の数字」に変えるVBAのテクニックを、あなたに伝授します。
1. なぜ「変換」が必要なの?
例えば、あなたがWebサイトからコピーしたデータに「¥1,000」や「100pv」と書いてあったとします。これをVBAでそのまま足し算しようとしても、VBAは「¥」や「pv」という文字を見て、「これは計算できない文字だ!」と判断してしまいます。
これを解決するのが、「型変換関数(かたへんかんかんすう)」です。
2. あなたが使うべき2つの魔法の言葉
VBAにはいくつか方法がありますが、まずはこの2つを覚えておけば完璧です。
① とにかく数字っぽければOK!「Val関数」
ExcelのVALUE関数に一番近いのがこれです。
VBA
数字 = Val("100")
この魔法を使うと、文字の “100” が、計算できる数字の 100 に変わります。 便利なのは、「100円」のように後ろに文字がついていても、数字の部分だけを抜き出してくれる点です。(※先頭が数字である必要があります)
② 小数点まで正確に!「CDbl関数」
もし、あなたが扱う数字に「12.5」のような小数点が含まれているなら、こちらがおすすめです。
VBA
正確な数字 = CDbl("12.5")
「C」はConvert(変換)、「Dbl」はDouble(小数もOKな型)の略です。プロの世界ではこちらがよく使われます。
3. 具体的な例題:収益を計算してみよう
例えば、あなたが「148%」という文字を読み取って、それを倍率表記にしたい時のコードはこうなります。
VBA
Sub 収益を計算する()
Dim 文字データ As String
Dim 計算用の数字 As Double
' あなたが読み取った文字(例えば "148%")
文字データ = "148%"
' 魔法の言葉で数字に変える!
計算用の数字 = Val(文字データ)
' 倍率にして表示してみる
MsgBox 計算用の数字 * 1/100 & "倍です"
End Sub
4. 使うための準備
- 必要なExcelバージョン: すべてのバージョン(Excel 2021はもちろん、古いExcelでも動きます)。
- 先に覚えておくこと:
- 変数(へんすう): データを入れておく箱のこと。
- .Value = .Value: 前回の記事で紹介した「値を移す方法」を知っていると、よりスムーズに理解できます。


コメント