Replaceメソッド 3行マクロ 66回
名簿などで半角と全角のスペースが混在していたり、電話番号の区切りがまちまちだったりと、Excelで置換が必要なケースは結構あります。
今回は、名簿に限らず、セル範囲内から特定の文字を一括置換するかんたんなReplaceメソッドを使ったミニマクロを紹介します。
(サンプルファイルは、こちらから 3行マクロ66回サンプルデータ)
Excelバージョン:


| 名前 | 説明 |
|---|---|
| What | Excel で検索する文字列。 |
| Replacement | 置き換える文字列を指定。 |
| LookAt | xlPart:検索テキストの一部を検索します。 xlWhole:検索テキスト全体を検索します。 |
| SearchOrder | xlByColumns:列を下方向に検索してから、次の列に移動します。 xlByRows:行を横方向に検索してから、次の行に移動します。 |
| MatchCase | 大文字と小文字を区別して検索するには、True を指定します。 |
| MatchByte | この引数は、Microsoft Excel で 2 バイト言語サポートを選択またはインストールした場合にのみ使用します。 2 バイト文字が 2 バイト文字とだけ一致するようにする場合は、True?を指定します。 2 バイト文字が同等の 1 バイト文字とも一致するようにする場合は、False?を指定します。 |
| SearchFormat | メソッドの検索書式を指定します。 |
| ReplaceFormat | メソッドの置換書式を指定します。 |
Sub 半角に区切りを統一() 'Replaceメソッド
Range("B2:B21").Replace " ", " ", xlPart
End Sub
このように、Replaceメソッドの場合は置換したい範囲を指定すればいいので、上記のようにコードが簡潔になります。
また、もし、区切りに"/"などが使用されている氏名が混在していても、1行追加するだけで済みますね。
Sub 半角に区切りを統一2() 'Replaceメソッド
Range("B2:B21").Replace " ", " ", xlPart
Range("B2:B21").Replace "/", " ", xlPart
End Sub
実行すると、下図のように名簿の下処理が完了します。
Sub 半角に区切りを統一3() 'Selectionを使って Selection.Replace " ", " ", xlPart End Sub
Sub 文字列置換区切りを統一4() With ActiveSheet.UsedRange .Replace " ", " ", xlPart End With End Sub
Sub 置換したい文字列をユーザーが入力() Dim 探す As String, 結果 As String 探す = InputBox(Prompt:="置換前文字列を入力してね") 結果 = InputBox(Prompt:="置換後の文字列を入力してね") With ActiveSheet.UsedRange .Replace 探す, 結果, xlPart End With End Sub

