Replaceメソッドで特定の文字を全て消去します

 こばとの生まれ故郷である京都の住所表記はちょっと変わっていて、たとえば「京都市北区」のあとに、さらに「雲ケ畑」という区域名があって、そのあとに「中津川町」のようになっている所があります。実際は「雲ケ畑中津川町」で1つの町名として扱われるのですが、とある事情があって、住所録から「中津川町」だけを取り出したいなあと考えたのです。少しいじれば他に何か応用が効くかもしれないので、いちおうマクロを載せておきますね。下図のように、B 列に京都市北区の住所が並んでいて、D 列に区域名の一覧があるとします。もちろん実際は何千ものデータが並んでいるのですが、それを簡略化したモデルと考えてください。

 VBAのReplaceメソッドで文字を置き換えます

 セル D2 ~ D4 の範囲には予め「区域」という名前をつけておきます。テーブルに変換するほどの必要はなくても、範囲に名前をつけておくだけで、マクロがとても書きやすくなるのです。
 

一覧にある文字を全て消去するマクロ

 B 列を選択した状態で以下のマクロを実行すると B 列にある「雲ケ畑」、「出雲路」、「北大山」という区域名が全て消えます。

 Sub 置換()

 Dim ct As Integer, i As Integer

 ct = Range("区域").Rows.Count

 For i = 1 To ct
  Selection.Replace what:=Range("区域").Cells(i, 1), replacement:=""
 Next i

 End Sub

 こざっぱりとしたコードでしょ? こんなに短い行数で済むのは、Replace メソッド という、とっても便利なメソッドがあるからなのです。

Replace メソッド

 Replace メソッド はオブジェクトに含まれる特定の文字列を指定した文字列に置き換えます。たとえば Cells プロパティでワークシート全体のセルを得て、

Cells.Replace what:="a", replacement:="b"

とすると、シート内の全ての文字 a が b に置き換えられます。上のマクロでは For...Next の中に組み込まれていて、セル D2 から1つずつ置換対象の文字を指定して順に "" に置き換えています(つまり削除しているのです)。

 D 列にあるデータをいくら増やしても上のマクロは使えるので、色々と試してみてくださいな。こばと、京都に里帰りしたくなっちゃったな。それじゃまたねー♪

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)