「はぁ……。この50枚もあるシートの『令和5年』を全部『令和6年』に書き換えなきゃいけないの? 手作業でやったら絶対に見落としちゃうよ……。 早く帰りたい」
そんなため息を、心の中で漏らしたことはありませんか?
私も昔、同じように「これは手作業でやるべきではないな……」と頭を抱えていました。
そんな手作業の限界を解決してくれるのが、Excel VBAのReplaceメソッドです。これを使えば、たとえ100枚のシートがあっても、ボタン一つ、わずか1秒で全ての文字を置き換えることができます。
今回は、初心者でも今日から使える「一括置換」を分かりやすく解説します!
1. Replaceメソッドとは?
VBAのReplaceメソッドを一言で言うなら、「超高性能なシール貼り替え機」です。
例えば、クラス全員の机に「4組」というシールが貼ってあるとします。これを「5組」に貼り替えたいとき、一枚ずつ剥がして貼るのは大変ですよね。
しかしReplaceメソッドを使えば、「この教室にある『4組』というシールを全部探して、一瞬で『5組』に貼り替えてください」と指示を出すだけで、作業が完了します。
2. 【コピペOK】全シートを一括置換するコード
まずは難しい理屈抜きですぐに使える具体的なコードをご紹介します。
このコードは、実行するだけでブック内にあるすべてのワークシートを順番に確認し、指定した文字を一度に置き換えてくれる便利なものです。
Sub AllSheetReplace()
' 変数の宣言
Dim ws As Worksheet
Dim beforeText As String
Dim afterText As String
' 【ここを書き換えてください】
beforeText = "令和5年" ' 置き換えたい古い文字
afterText = "令和6年" ' 新しく入れたい文字
' 確認メッセージ(誤操作対策)
If MsgBox(beforeText & " を " & afterText & " に全置換しますか?", vbYesNo) = vbNo Then Exit Sub
' 全てのシートを順番に処理するループ
For Each ws In ThisWorkbook.Worksheets
' Replaceメソッドを実行
' What:=探す文字, Replacement:=置き換える文字, LookAt:=xlPart(部分一致)
ws.Cells.Replace What:=beforeText, _
Replacement:=afterText, _
LookAt:=xlPart, _
MatchCase:=False
Next ws
MsgBox "全てのシートの置換が完了しました!"
End Sub
3. 知っておきたい「部分一致」と「完全一致」
コードの中にある LookAt:=xlPart という記述は、安全に置換を行うために非常に重要なポイントとなります。
- xlPart(部分一致): 「東京都」を探すとき、「東京都千代田区」のように一部が含まれているセルもすべて対象になります。
- xlWhole(完全一致): 「東京都」と一言一句ぴったり同じデータが入っているセルだけを対象にします。
ここを誤ってしまうと、書き換えたくない文字まで変わってしまうリスクがあります。そのため基本はxlPartのままで問題ありませんが、ピンポイントで指定したい場合はxlWholeに書き換えてご活用ください。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント