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




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

シートが二つあります。

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



【1】削除

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



【2】置換

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

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




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


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






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

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

ベストアンサー

id:a-kuma3 No.1

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

ポイント400pt

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

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 サブルーチンを実行してください。

  • "置換" シートの A列に、[ ] で括られたデータがあると、期待した通りに置換できません
  • "置換" シートの A列で、データの重複があるとエラーになります
  • "置換" シートの行数が多いと、遅いかも
id:naranara19

ありがとうございます。しっかりと動きました。ご注意点もありがとうございます。お休みの中、心より感謝します。

2017/09/17 21:56:51

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

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

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

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

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