見た目は数字、中身は文字?計算エラーを解決する「数字変換」の方法

Excel・VBA・AI活用
スポンサーリンク
スポンサーリンク

 「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: 前回の記事で紹介した「値を移す方法」を知っていると、よりスムーズに理解できます。

コメント

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