Excel

【Excel】VBAで文字列を数値に一括変換:セル指定、列方向全体、16進数・小数点【Val関数, Range, Cells】

当サイトでは記事内に広告を含みます。

この記事では、ExcelのVBAで文字列を数値に一括変換する方法について解説していきます。

ポイントとしては☆Val関数☆、☆Range☆、☆Cells☆を使用することです。

なお、マクロ初心者でもわかりやすいように変数名をaaaaa変数aaaaaといった名称にしています。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!

VBAで文字列を数値に一括変換する方法(セルの範囲指定)【Val関数】

それではまず、セルの範囲指定について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaavalSingleCelluaaaaa()
    Dim aaaaarangeuaaaaa As Range
    Set aaaaarangeuaaaaa = ThisWorkbook.Worksheets("Sheet1").Range("A1:A10")

    For Each aaaaacelluaaaaa In aaaaarangeuaaaaa
        aaaaacelluaaaaa.Value = Val(aaaaacelluaaaaa.Value)
    Next aaaaacelluaaaaa
End Sub

コードのAlt+F8を押し、マクロ選択画面でaaaaavalSingleCelluaaaaa関数を実行します。

このコードでは、Sheet1のA1からA10までのセルを数値に一括変換しています。文字列が数値に変わるのを確認できます。

VBAで文字列を数値に一括変換する方法(列方向全体)【Cells】

続いては、列方向全体について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaavalEntireColumnuaaaaa()
    Dim aaaaaLastRowuaaaaa As Long
    aaaaaLastRowuaaaaa = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

    For aaaaaRowuaaaaa = 1 To aaaaaLastRowuaaaaa
        ThisWorkbook.Worksheets("Sheet1").Cells(aaaaaRowuaaaaa, 1).Value = Val(ThisWorkbook.Worksheets("Sheet1").Cells(aaaaaRowuaaaaa, 1).Value)
    Next aaaaaRowuaaaaa
End Sub

コードのAlt+F8を押し、マクロ選択画面でaaaaavalEntireColumnuaaaaa関数を実行します。

このコードでは、Sheet1のA列の全てのセルを数値に一括変換しています。必要なセル範囲を変更する場合は適切にコードを調整してください。

VBAで文字列を数値に一括変換する方法(列方向、16進数や少数点)

続いては、16進数や少数点を含む列方向の変換について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaavalHexDecimaluaaaaa()
    Dim aaaaaLastRowuaaaaa As Long
    Dim aaaaaConvertedValueuaaaaa As Double

    aaaaaLastRowuaaaaa = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

    For aaaaaRowuaaaaa = 1 To aaaaaLastRowuaaaaa
        If InStr(1, ThisWorkbook.Worksheets("Sheet1").Cells(aaaaaRowuaaaaa, 1).Value, "0x") > 0 Then
            aaaaaConvertedValueuaaaaa = WorksheetFunction.Hex2Dec(Replace(ThisWorkbook.Worksheets("Sheet1").Cells(aaaaaRowuaaaaa, 1).Value, "0x", ""))
        Else
            aaaaaConvertedValueuaaaaa = Val(ThisWorkbook.Worksheets("Sheet1").Cells(aaaaaRowuaaaaa, 1).Value)
        End If
        ThisWorkbook.Worksheets("Sheet1").Cells(aaaaaRowuaaaaa, 1).Value = aaaaaConvertedValueuaaaaa
    Next aaaaaRowuaaaaa
End Sub

コードのAlt+F8を押し、マクロ選択画面でaaaaavalHexDecimaluaaaaa関数を実行します。

このコードでは、16進数(例:”0x1A”)や通常の文字列数値を、数値に一括変換します。16進数は先頭に”0x”が付いていることを前提としています。

以上、VBAでExcelの文字列を数値に一括変換する方法について解説しました。適切な関数や手法を用いて、効率的な作業を目指しましょう。