この記事では、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の文字列を数値に一括変換する方法について解説しました。適切な関数や手法を用いて、効率的な作業を目指しましょう。