大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで文字列を数値に変換する方法と、数値を文字列に変換する方法についてご紹介します。文字列⇔数値の変換は、ValとCStrでできます。このValとCStrを覚えておけば数値と文字列の扱いが楽になります。

はじめに

この記事では、文字列を数値に変換するValと、数値を文字列に変換するCStrについてご紹介します。

ValとCStrを使えば、文字列と数値の扱いが楽になります。

この記事で紹介すること

  • 文字列を数値に変換
  • 数値を文字列に変換

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードを記載しておきます。

度忘れしてしまったから、パッと思い出したいという場合にどうぞ。

'数値に変換
a = Val("123")
'文字列に変換
a = CStr(123)

では、説明していきます。

VBAで文字列を数値に変換(Val)

文字列を数値に変換するには、『Val』を使えばできます。

では使い方を具体例を挙げて説明します。

使い方

文字列を数値に変換する『Val』の入力は、

『数値 = Val(文字列)』

というようにします。

では、使用例をみていきます。

1文字を変換

まず、1文字を数値に変換してみます。

文字『"1"』を数値の『1』に変換するVBAコードです。

Sub TEST1()
    
    a = Val("1") '数値に変換
    b = 1
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

文字『"1"』を数値『1』に変換した後に、数値『1』と一致するかを確認するVBAコードになっています。

では、結果をみてみます。

1文字の文字列を数値に変換

文字を数値に変換して数値と一致するかを判定した結果

結果は、『一致します』となりました。

文字列を数値に変換できています。

変換しないと文字列と数値は一致しません

ちなみに、文字『"1"』を数値に変換しないで、数値『1』と比較すると一致しません。

やってみます。

Sub TEST2()
    
    a = "1"
    b = 1
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

文字『"1"』と数値『1』が一致するかを比較しています。

結果です。

文字と数値が一致するかを比較した結果

結果は、『一致しません』となります。

文字列を数値として扱いたい場合は、Valで数値に変換する必要があります。

文字列を変換

つづいて、文字列『"123"』を数値『123』に変換してみます。

文字列『"123"』を数値『123』に変換して、一致するかを確認するVBAコードです。

Sub TEST3()
    
    a = Val("123") '数値に変換
    b = 123
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

結果をみてみます。

文字列を数値に変換

Valで文字列を数値に変換して一致するかを確認した結果

結果は、『一致します』となりました。

複数の文字でも、正しく数値に変換できます。

数値以外の文字列を変換

ちなみに、数値以外の文字列をValを使って数値に変換すると、結果は『0』となります。

やってみます。

文字列『"abc"』をValを使って数値に変換するVBAコードです。

Sub TEST4()
    
    a = Val("abc") '数値に変換
    
    MsgBox a
    
End Sub

結果をみてみます。

数値以外を数値に変換

数値以外の文字列をValを使って数値に変換した結果

結果は、『0』となりました。

数値以外は、Valで変換すると『0』となります。

数値+数値以外を変換

数値と数値以外の文字列を、Valを使って数値に変換してみます。

結果は、数値として認識できるところまでは、数値に変換してくれます。

やってみます。

文字列『"123abc"』をValを使って数値に変換するVBAコードです。

Sub TEST5()
    
    a = Val("123abc") '数値に変換
    
    MsgBox a
    
End Sub

では実行してみます。

数値+数値以外を数値に変換

数値+数値以外の文字列をValを使って数値に変換した結果

結果は、『123』となりました。

数値として認識する部分ところまでは、数値に変換してくれます。

数値以外+数値を変換

数値以外の文字列と数値を、Valを使って数値に変換してみます。

文字列の最初が数値以外となっているので、結果は『0』となります。

やってみます。

文字列『"abc123"』をValを使って数値に変換するVBAコードです。

Sub TEST6()
    
    a = Val("abc123") '数値に変換
    
    MsgBox a
    
End Sub

では、実行してみます。

数値以外+数値を数値に変換

数値以外の文字列+数値をValを使って数値に変換した結果

結果は、『0』となりました。

最初の文字が数値以外なので、数値として認識できず、『0』となります。

Valの特徴です。

VBAで数値を文字列に変換(CStr)

先ほどとは反対に、数値を文字列に変換する『CStr』についてご説明します。

CStrの使い方と変換の具体例を挙げながら説明していきます。

使い方

まず、数値を文字列に変換するCStrの入力は、

『文字列 = CStr(数値)』

のように入力します。

では、いくつか文字列に変換するVBAコードを挙げていきます。

1桁の数値を変換

1桁の数値を文字列に変換してみます。

数値『1』をCStrを使って文字『"1"』に変換して、文字『"1"』と一致するかを比較しています。

Sub TEST7()
    
    a = CStr(1) '文字列に変換
    b = "1"
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

実行してみます。

数値を文字列に変換

数値をCStrを使って文字に変換して、文字と一致するかを比較した結果

結果は、『一致します』となりました。

数値を文字列に変換できています。

変換しないと数値と文字列は一致しません

ちなみに、数値『1』と文字列『"1"』をそのまま比較すると、一致しません。

やってみます。

数値『1』と文字列『"1"』が一致するかを比較するVBAコードです。

Sub TEST8()
    
    a = 1
    b = "1"
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

実行してみます。

数値と文字列が一致するかを比較した結果

結果は、『一致しません』となります。

数値を文字列として扱いたい場合は、CStrを使って文字列に変換しましょう。

3桁の数値を変換

3桁の数値を文字列に変換してみます。

数値『123』をCStrを使って文字列『"123"』に変換して、文字列『"123"』と一致するかを比較するVBAコードです。

Sub TEST9()
    
    a = CStr(123) '文字列に変換
    b = "123"
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

実行します。

3桁の数値を文字列に変換

数値をCStrを使って文字列に変換して文字列と一致するかを比較した結果

結果は、『一致します』となりました。

小数点を変換

ついでに、小数点を含む数値を文字列に変換できるかやってみます。

結果としては、もちろん文字列に変換できます。

やってみます。

数値『123.456』をCStrを使って、文字列『"123.456"』に変換して文字列『"123.456"』と一致するかを比較してみます。

Sub TEST10()
    
    a = CStr(123.456) '文字列に変換
    b = "123.456"
    
    If a = b Then
        MsgBox "一致します"
    Else
        MsgBox "一致しません"
    End If
    
End Sub

実行します。

小数点を含む数値を文字列に変換

CStrを使って小数点を含む数値を文字列に変換して一致するか比較した結果

結果は、『一致します』となりました。

小数点でも、文字列に変換できます。

セルに文字列として入力(NumberFormatLocal)

さいごに、おまけです。

数値を、文字列としてセルに入力する方法です。

この場合は、セルの表示形式を『NumberFormatLocal』を使って、『文字列』に設定するとできます。

文字列『"0123"』を文字列として、セルに入力してみます。

わかりやすく数値ではなく文字列『"0123"』にしています。

Sub TEST11()
    
    With ActiveSheet
        '表示形式を文字列にする
        .Cells(1, 1).NumberFormatLocal = "@"
        .Cells(1, 1) = "0123"
    End With
    
End Sub

結果です。

数値を文字列としてセルに入力

NumberFormatLocalを使って数値を文字列としてセルに入力した結果

セルに文字列として入力できました。

ちょっと脱線でした。

おわりに

この記事では、文字列を数値に変換するValと、数値を文字列に変換するCStrについてご紹介しました。

ValとCStrを使えば、文字列と数値の扱いが楽になります。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す