スポンサーリンク

【VBA】Excelマクロで文字列を置換(統一)する方法|スペース削除, 改行削除

VBA

Replaceで文字列を書き換えることができます。

Replaceのコード例

スペースを削除したりもできるので便利です。

文字の置換:Replace

Replaceの使い方

株の文字入力例

このように、”株式会社”の表示が統一されていないとします。
B列に”株式会社”として統一した社名を出力しましょう。

Sub test()

For i = 1 To 3
    Target = Cells(i, 1)
    Target = Replace(Target, "㈱", "株式会社")
    Target = Replace(Target, "(株)", "株式会社")
    Cells(i, 2) = Target
Next i

End Sub
Replaceで株の文字を変換した例

Replaceの()には、対象の文字列、置換したい文字、置換後の文字を入れます。

Replaceのコード例

今回は、変換前の文字をTargetとして”㈱”と”(株)”の両方のReplaceに通しました。
こうすると、どちらの表記であっても最終的には”株式会社”に統一されます。

データの最終行を自動取得する方法

ファイルによってデータが入っている行数が異なる場合は、以下のように書きましょう。

Sub test()

endRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To endRow
    Target = Cells(i, 1)
    Target = Replace(Target, "㈱", "株式会社")
    Target = Replace(Target, "(株)", "株式会社")
    Cells(i, 2) = Target
Next i

End Sub
最終行 = Cells(Rows.Count, 1).End(xlUp).Row

こうすると、データ数が100でも1万でも、何行入っていても大丈夫です。
>>Excelマクロで最終行(列)を取得する方法

ファイルを開くときに自動で置換する方法

イベントプロシージャを使えば、ファイルを開くときに自動で文字を置換してくれます。
プログラムを書く画面の左端にある”ThisWorkbook”をダブルクリックしましょう。

イベントプロシージャでプログラムを登録する図

ウィンドウが現れるので、左上を”Workbook”右上を”Open”にします。
これで、ファイルを開いたら自動実行するプログラムが作れます。

Private Sub Workbook_Open()

endRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To endRow
    Target = Cells(i, 1)
    Target = Replace(Target, "㈱", "株式会社")
    Target = Replace(Target, "(株)", "株式会社")
    Cells(i, 2) = Target
Next i

End Sub

処理内容はさっきと同じです。
こうするとファイルを開いたときに勝手に文字を統一してくれます。

スペースを削除する方法

スペースが入った文字列の例

このように、半角スペースと全角スペースが混在しているとします。
半角と全角の両方をReplaceで変換し、削除してみましょう。

Sub test()

endRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To endRow
    Target = Cells(i, 1)
    Target = Replace(Target, " ", "")
    Target = Replace(Target, " ", "")
    Cells(i, 2) = Target
Next i

End Sub

変換後は””で、つまり文字なしにします。

Replaceでスペースを削除する例
Replaceでスペースを削除した後の図

例えば全角を半角に統一したいなら、Replace(Target, “ ”, ” “)でOKです。

改行を削除する方法

改行が入っている文字列の例

セルの中に改行があると見栄えが悪いので、不要な改行はReplaceで削除しましょう。

Sub test()

endRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To endRow
    Target = Cells(i, 1)
    Target = Replace(Target, vbLf, "")
    Cells(i, 2) = Target
Next i

End Sub
Replace(“文字列”, vbLf, “”)

VBAでは改行をvbLfとして認識しています。
なのでReplaceでvbLfを””、つまり文字なしにすれば消せます。

Replaceで改行を削除した後の図

大文字小文字の変換:UCase, LCase

UCaseで大文字に変換

UCaseでアルファベットを大文字に変換できます。

Sub test()

Target = "sample"
MsgBox Target

Target = UCase(Target)
MsgBox Target

End Sub
Ucaseで大文字に変換する図

実行すれば、最初の文字”sample”が大文字の”SAMPLE”に変換されているとわかります。

LCaseで小文字に変換

小文字に変換するには、LCaseを使います。

Sub test()

Target = "SAMPLE"
MsgBox Target

Target = LCase(Target)
MsgBox Target

End Sub

UCaseと逆のことをしているだけですね。

StrConvで好きな形式に変換

StrConvを使えば、大文字にも小文字にも変換可能です。

StrConv(“文字列”, 変換条件)
 ・vbUpperCase:大文字
 ・vbLowerCase:小文字
 ・vbProperCase:先頭だけ大文字
 ・vbHiragana   :ひらがな
 ・vbKatakana   :カタカナ

例えば、”sample”を大文字に変換したければ、StrConv(“sample”, vbUpperCase)と書きましょう。
ひらがなやカタカナに変えることもできますが、ほとんど使うことはありませんね。。。

まとめ

今回は文字の置換方法について解説しました。
イベントプロシージャで自動実行すると便利なので、ぜひ使ってみましょう。

コメント

タイトルとURLをコピーしました