Excelのマクロで指定のキーワードを、各行指定の文字列で置換したい


今、G列にデータがズラリと12万行ほどありまして。
まず5行目のセルの文字列(仮に“りんご”だとします)をコピーしまして。
6行目から23行目の「すきやき」という文字列を、“りんご”に置換します。

次に26行目の文字列(仮に“ごりら”だとします)をコピーしまして。
27行目から44行目の同じく「すきやき」という文字列を、“ごりら”に置換します。

さらに47行目の文字列(仮に“らっぱ”だとします)をコピーしまして。
48行目から65行目の同じく「すきやき」という文字列を、“らっぱ”に置換します。


このように、5行目、26行目、47行目、68行目、89行目…と、5行目を起点にして、21行毎に各行のセルをコピーしまして。
各行の下にある18行のセルが全て「すきやき」になってしまってるので、それをコピーしたセルで書き換え(置換)したいのです。

そのような処理がマクロ等で可能であればお教えいただけないでしょうか。
よろしくお願いいたします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2018/02/16 21:11:44
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント1300pt

下記のマクロを標準モジュールにはりつけて、replace_word サブルーチンを実行してください。

Sub replace_word()
    col_target = 7      ' G列
    word = "すきやき"

    last_row = Cells(Rows.Count, col_target).End(xlUp).Row

    For r = 5 To last_row Step 21
        new_word = Cells(r, col_target).Value
        For rr = r + 1 To r + 18
            Cells(rr, col_target) = Replace(Cells(rr, col_target), word, new_word)
        Next
    Next
End Sub
id:moon-fondu

すごいです、10秒かからないぐらいで10万行以上のデータが置換されました!
ありがとうございました(^^♪

2018/02/16 21:11:11

その他の回答1件)

id:smithy250 No.1

回答回数45ベストアンサー獲得回数11

ポイント200pt

=SUBSTITUTE(G5,"すきやき",INDIRECT("R" & INT( (ROW()-5)/21)*21+5 & "C7",FALSE) )

他1件のコメントを見る
id:smithy250

12万行もの処理にPCが耐えられるかは知りません

2018/02/15 23:31:48
id:moon-fondu

ありがとうございます、うまく置換できました!

2018/02/16 21:10:38
id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント1300pt

下記のマクロを標準モジュールにはりつけて、replace_word サブルーチンを実行してください。

Sub replace_word()
    col_target = 7      ' G列
    word = "すきやき"

    last_row = Cells(Rows.Count, col_target).End(xlUp).Row

    For r = 5 To last_row Step 21
        new_word = Cells(r, col_target).Value
        For rr = r + 1 To r + 18
            Cells(rr, col_target) = Replace(Cells(rr, col_target), word, new_word)
        Next
    Next
End Sub
id:moon-fondu

すごいです、10秒かからないぐらいで10万行以上のデータが置換されました!
ありがとうございました(^^♪

2018/02/16 21:11:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません