Replaceで文字列を書き換えることができます。
![Replaceのコード例](https://htomblog.com/wp-content/uploads/2021/04/image-97.png)
スペースを削除したりもできるので便利です。
文字の置換:Replace
Replaceの使い方
![株の文字入力例](https://htomblog.com/wp-content/uploads/2021/01/image-82.png)
このように、”株式会社”の表示が統一されていないとします。
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で株の文字を変換した例](https://htomblog.com/wp-content/uploads/2021/01/image-83.png)
Replaceの()には、対象の文字列、置換したい文字、置換後の文字を入れます。
![Replaceのコード例](https://htomblog.com/wp-content/uploads/2021/04/image-97.png)
今回は、変換前の文字を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
こうすると、データ数が100でも1万でも、何行入っていても大丈夫です。
>>Excelマクロで最終行(列)を取得する方法
ファイルを開くときに自動で置換する方法
イベントプロシージャを使えば、ファイルを開くときに自動で文字を置換してくれます。
プログラムを書く画面の左端にある”ThisWorkbook”をダブルクリックしましょう。
![イベントプロシージャでプログラムを登録する図](https://htomblog.com/wp-content/uploads/2021/01/image-32.png)
ウィンドウが現れるので、左上を”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
処理内容はさっきと同じです。
こうするとファイルを開いたときに勝手に文字を統一してくれます。
スペースを削除する方法
![スペースが入った文字列の例](https://htomblog.com/wp-content/uploads/2021/01/image-84.png)
このように、半角スペースと全角スペースが混在しているとします。
半角と全角の両方を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でスペースを削除する例](https://htomblog.com/wp-content/uploads/2021/04/image-98.png)
![Replaceでスペースを削除した後の図](https://htomblog.com/wp-content/uploads/2021/01/image-85.png)
例えば全角を半角に統一したいなら、Replace(Target, “ ”, ” “)でOKです。
改行を削除する方法
![改行が入っている文字列の例](https://htomblog.com/wp-content/uploads/2021/01/image-86.png)
セルの中に改行があると見栄えが悪いので、不要な改行は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
VBAでは改行をvbLfとして認識しています。
なのでReplaceでvbLfを””、つまり文字なしにすれば消せます。
![Replaceで改行を削除した後の図](https://htomblog.com/wp-content/uploads/2021/01/image-87.png)
大文字小文字の変換:UCase, LCase
UCaseで大文字に変換
UCaseでアルファベットを大文字に変換できます。
Sub test()
Target = "sample"
MsgBox Target
Target = UCase(Target)
MsgBox Target
End Sub
![Ucaseで大文字に変換する図](https://htomblog.com/wp-content/uploads/2021/04/image-99.png)
実行すれば、最初の文字”sample”が大文字の”SAMPLE”に変換されているとわかります。
LCaseで小文字に変換
小文字に変換するには、LCaseを使います。
Sub test()
Target = "SAMPLE"
MsgBox Target
Target = LCase(Target)
MsgBox Target
End Sub
UCaseと逆のことをしているだけですね。
StrConvで好きな形式に変換
StrConvを使えば、大文字にも小文字にも変換可能です。
例えば、”sample”を大文字に変換したければ、StrConv(“sample”, vbUpperCase)と書きましょう。
ひらがなやカタカナに変えることもできますが、ほとんど使うことはありませんね。。。
まとめ
今回は文字の置換方法について解説しました。
イベントプロシージャで自動実行すると便利なので、ぜひ使ってみましょう。
コメント