Str関数:数値を文字列に変換する
VBAのStr関数は、引数で指定された数値を文字列に変換する関数です。変換された文字列は、指数表記または小数点表記のどちらかになります。
*表記方法:文字列= Str(数値)
例)Cell(1,1) = Cstr(Cell(1,1))
<数値を文字列に変換する方法>
- Cstr関数:数値を文字列にする
- Str関数:正負記号付きの文字列に変換。
変換前の数値が0または正数(プラス値)の場合、左端に半角スペースが付く。
負数(マイナス値)の場合、左端に負号(半角マイナス文字の-)が付く。 - Format関数:数値を金額形式や日付形式など指定した形式(フォーマット)の文字列に変換。
<注意>
列内に数値と文字列が混在している場合、一度文字列に変換してからCstrに変換。
また、Str関数で変換される数値は、Double型またはSingle型に限定されます。また、Str関数で変換された文字列は、数値を表しているわけではなく、単に数値を表す文字列であることに注意してください。
Cells(1, 1).NumberFormat = "@"
Cells(1, 1) = CStr(Cells(1, 1))
指定した列を文字列に変換
Sub 列を指定して文字列に変換()
Dim i As Long
For i = 1 To Range("A1").End(xlDown).Row
With Cells(i, "A")
.NumberFormatLocal = "@"
.Value = CStr(Cells(i, "A"))
End With
Next i
MsgBox "完了"
End Sub
選択した範囲を文字列に変換
Sub 選択範囲を文字列に変換()
Dim rng As Range
For Each rng In Selection
With rng
.NumberFormatLocal = "@"
.Value = CStr(rng)
End With
Next rng
End Sub
表示形式を文字列に変換
Sub Format()
Dim str As String
Dim i As Long
Dim max_row As Long
max_row = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To max_row
str = Range("A" & i).NumberFormatLocal
Range("B" & i) = str
Next i
MsgBox "完了"
End Sub
数値→文字列変換
Sub 選択したセル範囲の値を文字列へ変換()
Dim iRow As Long '行位置
Dim iCol As Long '列位置
Dim iRowMax As Long '行数
Dim iColMax As Long '列数
'// 変換後の表示形式を設定
Selection.NumberFormatLocal = "@"
'// 行位置、列位置、行数、列数を取得
iRow = Selection.Row
iCol = Selection.Column
iRowMax = iRow + Selection.Rows.Count - 1
iColMax = iCol + Selection.Columns.Count - 1
'// 選択セル範囲を列ごとにループ
For iCol = iCol To iColMax
If (Range(Cells(iRow, iCol), Cells(iRowMax, iCol)).Text <> "") Then
'// 区切り位置設定
Call Range(Cells(iRow, iCol), Cells(iRowMax, iCol)).TextToColumns
Call Val(Range(Cells(iRow, iCol), Cells(iRowMax, iCol)).TextToColumns)
'Range(Cells(i, iCoMaxl).Formula = "=VALUE(Cells(iRow, iCoMaxl))"
End If
Next
MsgBox "完了"
End Sub
参考)先頭が0の数値を表示させたい場合
Sub A列の数値を文字列に変換_先頭に0を付加()
Dim i As Long
For i = 1 To Range("A1").End(xlDown).Row
With Cells(i, "A")
.NumberFormatLocal = "@"
.Value = Format(.Value, "0000")
End With
Next i
MsgBox "完了"
End Sub
コメント