Excelで文字列リストを元に連続して置換するマクロ

Pocket

以前、Wordで文字列リストを元に連続して置換するマクロについて書いたのですが、今度はExcel版です。

まず「文字列リスト」というシートと「作業」というシートを作成します。

文字列リスト

A B
1 検索文字列 置換文字列
2 エディター エディタ
3 プリンター プリンタ
4 サーバー サーバ

文字列リストにはこのような置換用の表をセットしておきます。

マクロ

Sub 文字列リストに基づき連続して置換する()
    i = 2
    Do
        x1 = Sheets("文字列リスト").Cells(i, 1)
        x2 = Sheets("文字列リスト").Cells(i, 2)
        Sheets("作業").Cells.Replace _
            What:=x1, Replacement:=x2, _
            SearchOrder:=xlByColumns, MatchCase:=True
        i = i + 1
    Loop Until Sheets("文字列リスト").Cells(i, 1) = ""
End Sub

マクロ(VBA)をこのように書きます。

使い方

「文字列リスト」シートに上のような置換用の表をセットします。
「作業」シートに置換を施したい元の内容をセットしておきます。
マクロ「文字列リストに基づき連続して置換する」を実行します。
置換すると元には戻せませんので注意してください。

関連記事

[ 2011年9月22日 | カテゴリー: Excel | タグ: , ]

« | »

コメント

  1. flamming より:

    利用させていただきました。ありがとうございます。

    ただ、1~4の列を作るのであれば

    x1 = Sheets(“文字列リスト”).Cells(i, 2)
    x2 = Sheets(“文字列リスト”).Cells(i, 3)

    にしないといけませんね。
    特に1~4の列は単なる数字なので、ものすごい量の置換が行われます。

    とても有用な記事ですので、ご対応よろしくお願いします。

  2. flamming より:

    すみません。枠(A~B、1~4)の行・列を作らなければいいだけでしたね、、、。
    ただ、iが2から始まっているので、必要に感じました。

  3. stabucky より:

    >flammingさん
    ありがとうございます。
    ご指摘のとおり、行が途切れると処理を止める、という手法を使っています。

  4. ちゃぼ より:

    こんにちは。マクロ素人です。
    エクセルにて文中の数字を増税の為、8%の金額を10%に変更する作業をしております。
    上記マクロで実行すると永遠にループしてしますのですが、
    1回しか置換えしない方法は御座いますでしょうか?

    お忙しい中恐縮ですが、ご教示いただけますと幸いです。
    宜しくお願い致します。

  5. stabucky より:

    >ちゃぼさん
    遅くなり申し訳ありません。
    無限ループする理由が思いつきませんでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報