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

<Excel 2000を使っています>

同一シート内にある文字複数の置換(マスキング)がしたいのですが良い方法が思いつきません。
Excelの標準機能の置換は試したのですが、複数には対応していないみたいで
良い方法を教えてください。

具体的には、

A列に

「NID ホームベビー 」 ← (NID)を置換→PB
「スマイル40EXマイルド」← (スマイル)を置換→PB
「MKM東洋化学)コフピタのどスプレー」(MKM)を置換して→PB


・etc(数百件)☆PBと置換したい対象の文字は、40件ほどあります。

宜しくお願い致します。

1233922310
●拡大する

●質問者: chiroru-cyoko
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:ETC Excel スマイル ピタ ベビー
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●100ポイント

B列に置換対象の文字をいれておくと、A列をPBに置換するマクロです。

Option Explicit

Sub Macro1()
 Dim lastRow As Long
 Dim i As Long
 lastRow = Cells(Rows.Count, 2).End(xlUp).Row
 For i = 1 To lastRow
 If Cells(i, 2).Value <> "" Then
 Columns(1).Replace What:=Cells(i, 2).Value, Replacement:="PB", LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
 End If
 Next i
End Sub

http://q.hatena.ne.jp/

◎質問者からの返答

ありがとうございます。

私の説明が足りないところがあったので、申し訳ございません。

実は、A列の対象の文字(一部をPBに変更して)

具体例

「NID ホームベビー 」置換 → 「PB ホームベビー 」

「スマイル40EXマイルド」置換→ 「PB40EXマイルド」

としたかったのです。

言葉足らずで申し訳ありません。


2 ● Mook
●50ポイント ベストアンサー

(1)新しいシートを作成し、シート名を「変換表」としてください。

(2)変換表のA列に変換したい文字を順に記載ください。

(3)同シートのB列に変換後の対応する文字(すべて PB でしょうか?)を記載ください。

設定例)

NID PB
スマイル PB
MKM PB

下記のマクロを標準モジュール、Alt+F11で表示されるウィンドウで、「挿入」⇒「標準モジュール」

で表示される画面に張ってください。


変換したいセルの範囲を選択した状態で Alt+F8 を押し、slimer を実行してみてください。

Sub slimer()
 Dim r As Range
 Dim lastRow As Long
 
 lastRow = Worksheets("変換表").Range("A" & Rows.Count).End(xlUp).Row
 
 For Each r In Worksheets("変換表").Range("A1").Resize(1, lastRow)
 If Len(r.Value) > 0 And Len(r.Offset(0, 1).Value) > 0 Then
 Selection.Replace What:=r.Value, Replacement:=Len(r.Offset(0, 1).Value), _
 LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
 SearchFormat:=False, ReplaceFormat:=False
 End If
 Next
End Sub

http://www2s.biglobe.ne.jp/~iryo/vba/VBA02.html

◎質問者からの返答

Mook様

ご回答ありがとうございます。返事が遅くなってしまい申し訳ございません。

先ほど回答にしたが実行をしてみましたが、下記の所でエラーがでて

「中断モードを実行することはできません」

↓この記述が黄色く反転されています。

Selection.Replace What:=r.Value, Replacement:=Len(r.Offset(0, 1).Value), _

LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _

SearchFormat:=False, ReplaceFormat:=False

宜しくお願い致します。


3 ● Mook
●50ポイント

コメントが無効でしたので、再回答で失礼します。

(コメント有効にしていただければ、不明な点はコメントにて補足いたします。)


コードに不備がありました。

 Selection.Replace What:=r.Value, Replacement:=Len(r.Offset(0, 1).Value), _
 LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
 SearchFormat:=False, ReplaceFormat:=False

 Selection.Replace What:=r.Value, Replacement:=r.Offset(0, 1).Value, _
 LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
 SearchFormat:=False, ReplaceFormat:=False

もしくは

 Selection.Replace What:=r.Value, Replacement:=r.Offset(0, 1).Value, LookAt:=xlPart

にして試してみていただけますか。

http://www.moug.net/tech/exvba/0050117.htm

◎質問者からの返答

Mook様

お世話になっております。

以下の記述でエラーはでなくなったのですが、うまく「PB」と変換されません。

1、新しいシート名を「変換表」を作成する。

2、「変換表」A列に「NID」「スマイル」「MKM 」と対称の文字をいれました。

3、「変換表」B列に「PB」をすべて入れました。

最初のシートに戻り

4、Alt+F8 を押し、slimer を実行をしました。

動いた様子はあるのですが、変換はされませんでした。

宜しくお願い致します。

Sub slimer()

Dim r As Range

Dim lastRow As Long

lastRow = Worksheets("変換表").Range("A" & Rows.Count).End(xlUp).Row

For Each r In Worksheets("変換表").Range("A1").Resize(1, lastRow)

If Len(r.Value) > 0 And Len(r.Offset(0, 1).Value) > 0 Then

Selection.Replace What:=r.Value, Replacement:=r.Offset(0, 1).Value, LookAt:=xlPart

End If

Next

End Sub

関連質問


●質問をもっと探す●



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