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

【エクセルVBA】選択したセル内の文字を、削除、置換したい。



【詳しくは画像もあります】

シートが二つあります。

"auc"という名前のシート内の
文字列が入っているセルを複数選択しているとします。



【1】削除

[ ]でくくられたものは、[ ]ごと削除してつめてほしいのです。



【2】置換

もう一つのシートは"置換"シートでして、そのA列1行目からaucシート内の文字列にある見出し
言葉とB列1行目からは置換後の名前が入っています。

それにしたがって、aucシート内の選択されたセル内の文章を置換してほしいのです。




一部エラーがある場合、そのまま次のセルを実行していただき、そのエラーがあったセル番地だけ「S1セルでエラーがありました」
などと最後に表示していただければ幸いです。(エラーがあったセルは何もしない)


置換シートの見出しはA列が空白になったところで終了です。






エクセルVBAでの回答の方のみにポイント対象です。
どうかよろしくお願いいたします。

1505611679
●拡大する

●質問者: naranara19
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●400ポイント ベストアンサー

こんな感じでどうでしょう。

Sub edit_data()
 Set Map = CreateObject("Scripting.Dictionary")
 Set rep_sheet = Worksheets("置換")
 last_row = rep_sheet.Cells(Rows.Count, 1).End(xlUp).Row
 For r = 1 To last_row
 Map.Add rep_sheet.Cells(r, 1), rep_sheet.Cells(r, 2)
 Next

 Set re = CreateObject("VBScript.RegExp")
 re.Pattern = "\[[^\]]*\]"
 re.Global = True
 For Each cell In Selection
 s = cell.Value
 s = re.replace(s, "")
 For Each Key In Map
 s = replace(s, Key, Map.Item(Key))
 Next
 If cell.Value <> s Then
 cell.Value = s
 End If
 Next
End Sub

auc シートを選択した状態で、edit_data サブルーチンを実行してください。


naranara19さんのコメント
ありがとうございます。しっかりと動きました。ご注意点もありがとうございます。お休みの中、心より感謝します。
関連質問

●質問をもっと探す●



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