Excelの落とし穴「見た目は数字、中身は文字」をVBAで解決する3つの方法

【業務効率化】VBA
スポンサーリンク

こんにちは、ぐーです!

毎日大量の営業データを処理していると、避けては通れない課題に直面することがあります。それは、「見た目は数値なのに、Excelが計算対象として認識してくれない」という問題です。

皆さんも、一度は経験したことがあるのではないでしょうか。

  • 「売上を集計したいのに、なぜかエラーが出てしまう……」
  • 「商品コードの先頭に『0』を表示したいのに、勝手に消えてしまう……」

こうしたトラブルの背景には、実はデータの「型(データ型)」という概念が大きく関わっています。
人間の目には同じ「100」に見えても、コンピュータにとっては「計算可能な数値の100」と「単なる文字としての100」は、全く異なるデータとして扱われているのです。

今回は、この「型」を自由自在にコントロールし、エラーの悩みから解放されるための3つの関数をご紹介します。

【業務効率化】VBAの記事を見る

1. 数値を「文字」に変換する:CStr関数

まずは、計算用の数値を「文字列」として扱いたい場合の方法です。

例えば、数値の社員番号「1001」に「番」という文字を繋げて、「1001番」というメッセージを作成したいシーンなどで役立ちます。数値型のまま文字と結合しようとすると、プログラムが混乱してエラーが発生することがあります。そんな時に活躍するのが「CStr(シー・ストリング)」関数になります。

▼ コピペで使えるコード

Sub NumberToString()
    Dim myNumber As Long
    Dim myString As String
   
    myNumber = 12345
   
    ' 数字を文字に変換して結合
    myString = CStr(myNumber) & "番"
   
    MsgBox "あなたの番号は " & myString & " です"
End Sub

ポイント: CStr(数字) で、数字が「文字扱い」になります。これで文字同士の接着も安定します!

2. 文字を「整数」に変換する:CLng関数

次は逆のパターンで、「見た目は数字だが、中身は文字」として保存されているデータを計算に用いたい場合です。

外部システムからダウンロードしたCSVファイルや、WebサイトからコピーしたデータをExcelに貼り付けた際によく見られる現象です。これらが「文字」として認識されていると、そのままでは足し算などの計算ができません。

そこで「CLng(シー・ロング)」を利用します。この関数は、文字としての数字を「長整数(小数点を含まない数値)」へと変換してくれます。

▼ コピペで使えるコード

Sub StringToLong()
    Dim textPrice As String
    Dim total As Long
   
    textPrice = "500" ' これは文字としての500
   
    ' 文字を整数に変換して計算
    total = CLng(textPrice) * 2
   
    MsgBox "合計は " & total & " 円です"
End Sub

注意点: 小数点を含む数値に CLng を適用すると、自動的に四捨五入されて整数になってしまうため、その点だけ注意が必要です。

3. 文字を「小数」に変換する:CDbl関数

最後は、消費税率の計算など、精密な「小数点」を扱いたいケースです。

CLng では切り捨てられてしまう端数も、「CDbl(シー・ダブル)」を使えば正確に保持できます。これで複雑な数値計算もバッチリ対応可能になります。

▼ コピペで使えるコード

Sub StringToDouble()
    Dim textRate As String
    Dim result As Double
   
    textRate = "1.08" ' 文字としての小数
   
    ' 文字を倍精度浮動小数点数(小数)に変換
    result = 1000 * CDbl(textRate)
   
    MsgBox "税込価格は " & result & " 円です"
End Sub

まとめ:エラーに直面したら「型」を疑おう!

  • CStr: 数値 → 文字(文字列と結合したい時)
  • CLng: 文字 → 整数(一般的な計算をしたい時)
  • CDbl: 文字 → 小数(細かい数値を扱いたい時)

これら3つの関数をマスターすれば、突然の「型が一致しません」というエラーメッセージに驚くこともなくなります。

データを正しい姿に「着せ替える」ように、ぜひ日々の業務に取り入れてみてください。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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