人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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


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

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

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● smithy250
●200ポイント

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


smithy250さんのコメント
INDIRECT("R" & INT((ROW()-5)/21)*21+5 & "C7",FALSE)

smithy250さんのコメント
12万行もの処理にPCが耐えられるかは知りません

moon-fonduさんのコメント
ありがとうございます、うまく置換できました!

2 ● a-kuma3
●1300ポイント ベストアンサー

下記のマクロを標準モジュールにはりつけて、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

moon-fonduさんのコメント
すごいです、10秒かからないぐらいで10万行以上のデータが置換されました! ありがとうございました(^^♪
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ