大体でIT
大体でIT
Excel VBAで文字列を数値に変換する方法と、数値を文字列に変換する方法についてご紹介します。文字列⇔数値の変換は、ValとCStrでできます。このValとCStrを覚えておけば数値と文字列の扱いが楽になります。
この記事では、文字列を数値に変換するValと、数値を文字列に変換するCStrについてご紹介します。
ValとCStrを使えば、文字列と数値の扱いが楽になります。
初めに、ポイントとなるVBAコードを記載しておきます。
度忘れしてしまったから、パッと思い出したいという場合にどうぞ。
'数値に変換
a = Val("123")
'文字列に変換
a = CStr(123)
文字列を数値に変換するには、『Val』を使えばできます。
文字『"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を使って数値に変換すると、結果は『0』となります。
文字列『"abc"』をValを使って数値に変換するVBAコードです。
Sub TEST4()
a = Val("abc") '数値に変換
MsgBox a
End Sub
数値以外を数値に変換
数値と数値以外の文字列を、Valを使って数値に変換してみます。
結果は、数値として認識できるところまでは、数値に変換してくれます。
文字列『"123abc"』をValを使って数値に変換するVBAコードです。
Sub TEST5()
a = Val("123abc") '数値に変換
MsgBox a
End Sub
数値+数値以外を数値に変換
数値として認識する部分ところまでは、数値に変換してくれます。
数値以外の文字列と数値を、Valを使って数値に変換してみます。
文字列の最初が数値以外となっているので、結果は『0』となります。
文字列『"abc123"』をValを使って数値に変換するVBAコードです。
Sub TEST6()
a = Val("abc123") '数値に変換
MsgBox a
End Sub
数値以外+数値を数値に変換
最初の文字が数値以外なので、数値として認識できず、『0』となります。
先ほどとは反対に、数値を文字列に変換する『CStr』についてご説明します。
CStrの使い方と変換の具体例を挙げながら説明していきます。
では、いくつか文字列に変換するVBAコードを挙げていきます。
数値『1』をCStrを使って文字『"1"』に変換して、文字『"1"』と一致するかを比較しています。
Sub TEST7()
a = CStr(1) '文字列に変換
b = "1"
If a = b Then
MsgBox "一致します"
Else
MsgBox "一致しません"
End If
End Sub
数値を文字列に変換
変換しないと数値と文字列は一致しません
ちなみに、数値『1』と文字列『"1"』をそのまま比較すると、一致しません。
数値『1』と文字列『"1"』が一致するかを比較するVBAコードです。
Sub TEST8()
a = 1
b = "1"
If a = b Then
MsgBox "一致します"
Else
MsgBox "一致しません"
End If
End Sub
数値を文字列として扱いたい場合は、CStrを使って文字列に変換しましょう。
数値『123』をCStrを使って文字列『"123"』に変換して、文字列『"123"』と一致するかを比較するVBAコードです。
Sub TEST9()
a = CStr(123) '文字列に変換
b = "123"
If a = b Then
MsgBox "一致します"
Else
MsgBox "一致しません"
End If
End Sub
3桁の数値を文字列に変換
ついでに、小数点を含む数値を文字列に変換できるかやってみます。
数値『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
小数点を含む数値を文字列に変換
セルに文字列として入力(NumberFormatLocal)
この場合は、セルの表示形式を『NumberFormatLocal』を使って、『文字列』に設定するとできます。
文字列『"0123"』を文字列として、セルに入力してみます。
わかりやすく数値ではなく文字列『"0123"』にしています。
Sub TEST11()
With ActiveSheet
'表示形式を文字列にする
.Cells(1, 1).NumberFormatLocal = "@"
.Cells(1, 1) = "0123"
End With
End Sub
数値を文字列としてセルに入力
この記事では、文字列を数値に変換するValと、数値を文字列に変換するCStrについてご紹介しました。
ValとCStrを使えば、文字列と数値の扱いが楽になります。
参考になればと思います。最後までご覧くださいましてありがとうございました。