Replace関数とは
VBAのReplace関数は、文字列内の文字列を置換するために使用されます。Replace関数には、検索する文字列、置換する文字列、および元の文字列が含まれる文字列の3つの引数が必要です。Replace関数は、次のように構文を持ちます。
Replace(元の文字列, 検索する文字列, 置換する文字列, [開始位置], [置換回数], [比較の種類])
- 元の文字列:置換される文字列を含む文字列
- 検索する文字列:置換される文字列
- 置換する文字列:置換する文字列
- 開始位置:検索を開始する位置。省略可能で、指定しない場合は1がデフォルト値となります。
- 置換回数:指定された文字列を置換する回数。省略可能で、指定しない場合はすべてのインスタンスが置換されます。
- 比較の種類:文字列の比較方法を指定する値。省略可能で、vbBinaryCompare(バイナリ比較)がデフォルト値となります。vbTextCompare(テキスト比較)を指定すると大文字と小文字が区別されなくなります。
例えば、以下のコードは文字列の中の”red”を”green”に置換します。
Dim myString As String
myString = "I have a red car."
myString = Replace(myString, "red", "green")
これにより、「私はグリーン車を持っています」。という文字列が返されます。
選択した範囲のスペースを全て全角に変換する
これは、Excelシート上の特定の列に含まれる半角スペースを全角スペースに置換するエクセルマクロです。
Sub スペースを全角に統一する(RowNum As Long)
Dim c As Range
'ActiveSheet.Cells(1, 2).Value = "全角スペース統一"
'ActiveSheet.Range(Cells(2, 6), Cells(RowNum, 6)).Select
For Each c In Selection
c.Offset(0, 1).Value = Replace(c.Value, " ", " ")
Next c
MsgBox "完了"
End Sub
解説
- 1行目: Subルーチンの開始
- 2行目: 引数として受け取った行数をRowNumとして宣言します。
- 3-5行目: ここはコメントアウトされており、実行時には無視されますが、このマクロの目的を説明するためのものです。2行目は、このマクロが何を行うかを示しています。
- 7-9行目: 選択された範囲の各セルに対して、オフセット値が1である右隣のセルに置換後の値を設定します。
- 10行目: NextステートメントによりForループから抜けます。
- 11行目: Subルーチンの終了
Replace関数で文字を置換する_ループ
Sub 文字の置換()
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Target = Cells(i, 1)
Target = Replace(Target, "㈱", "株式会社")
Target = Replace(Target, "(株)", "株式会社")
Cells(i, 2) = Target
Next i
MsgBox "完了"
End Sub
Replace関数で半角スペースと全角スペース を削除する_ループ
これは、エクセルシート上のすべての行に対して、スペースと全角スペースを削除し、その変更を同じ行にある隣のセルに反映するエクセルマクロです。
Sub スペースの削除()
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Target = Cells(i, 1)
Target = Replace(Target, " ", "")
Target = Replace(Target, " ", "")
Cells(i, 2) = Target
Next i
MsgBox "完了"
End Sub
解説
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
: エクセルシートの最後の行を特定するためのコードです。For i = 1 To LastRow
: ループを開始する前に、エクセルシート内の各行に対して以下のコードが実行されます。Target = Cells(i, 1)
:Cells(i, 1)
で指定されたセルの内容をTarget
変数に格納します。Target = Replace(Target, " ", "")
:Target
内の空白を空文字に置き換えます。つまり、空白を削除します。Target = Replace(Target, " ", "")
:Target
内の全角空白を空文字に置き換えます。つまり、全角空白を削除します。Cells(i, 2) = Target
: 変更されたTarget
の値を、元のセルの隣のセルに格納します。Next i
:For
ループを終了します。MsgBox "完了"
: マクロの処理が完了したことを示すメッセージを表示します。
Replace関数で改行を削除する_ループ
Sub 改行の削除()
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Target = Cells(i, 1)
Target = Replace(Target, vbLf, "")
Cells(i, 2) = Target
Next i
MsgBox "完了"
End Sub
コメント