Replaceメソッド 3行マクロ 66回

文字を置換する

名簿などで半角と全角のスペースが混在していたり、電話番号の区切りがまちまちだったりと、Excelで置換が必要なケースは結構あります。
今回は、名簿に限らず、セル範囲内から特定の文字を一括置換するかんたんなマクロを紹介します。

(サンプルファイルは、こちらから 3行マクロ66回サンプルデータ

半角全角バラバラなスペースを統一したい

名簿の文字列を姓と名に分けるというような場合、通常はワークシート関数を使うことが多いです。 ただし、名簿の形式が統一されていない場合などでは、予め、名簿の原本を関数が使えるように加工してやる必要があります。
半角スペースと全角スペースが混在
下処理のしていない名簿を扱うときは、マクロの方が便利です。 例えば、上記の例のように、全角スペースを半角スペースに統一したい場合には、RangeオブジェクトのReplaceメソッドやReplace関数を使うことができます。 ここではReplaceメソッドの例を紹介しましょう。
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
実行すると、下図のように名簿の下処理が完了します。
文字列を抽出するマクロ6

汎用的に使うには Selection

範囲を限定せずに、汎用的に使いたい場合は、Range("B2:B21")の部分をSelectionとすることで選択範囲の文字の置換ができます。 (選択されているセル範囲はSelectionで表せるので、セル範囲を選択してからマクロを実行する。)
Sub 半角に区切りを統一3() 'Selectionを使って
  Selection.Replace " ", " ", xlPart
End Sub

UsedRangeを使う

長い表などで、セル範囲が選択しづらければ、UsedRangeを使う事もできます。 ただし、この場合は、使用されていた表全体が対象となるので注意が必要です。
Sub 文字列置換区切りを統一4()
  With ActiveSheet.UsedRange
  .Replace " ", " ", xlPart
  End With
End Sub

置換したい文字列をユーザーが入力

置換したい文字列をユーザーがInputBoxで入力できるようにすると、使い勝手がさらに良くなります。 3行マクロとしては、ちょっと長いですが、紹介しましょう。
Sub 置換したい文字列をユーザーが入力() 
Dim 探す As String, 結果 As String
探す = InputBox(Prompt:="置換前文字列を入力してね")
結果 = InputBox(Prompt:="置換後の文字列を入力してね")
  With ActiveSheet.UsedRange
  .Replace 探す, 結果, xlPart
  End With
End Sub
全角スペースを半角に置換マクロ1
コードを実行すると、インプットボックスが表示されるので、ユーザーが置換前文字列と置換後文字列を入力する事ができます。
全角スペースを半角に置換マクロ2
スポンサーリンク
スポンサーリンク
おすすめコンテンツ