MENU

複数の文字を、置換する (n対n)

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「複数の指定文字を、置換する (n対n)」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

英語表記?の伝票を日本語に置き換えます。

できました(^^)/

アプリの設定

2つの方法があります。

【A】 VBAマクロの中に、置換データを持つ

アプリのトップページ 

⇒▼検索・置換・2表比較 

⇒【ツール】複数の文字を、置換する (n対n)

【ポイント】

 行数が変わるデータの、最終行まで処理できます。なお、 表の間に、空白列があるので、範囲オプションは、「最終行まで(途中に空白があるとき)」を使い、右下セルに仮の最終セルを指定します。

 

 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。 

Sub デモ_2() '置換(n対n)
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("sheet1").Select
Range("f100").Select
Selection.End(xlUp).Select
右下セル = Selection.Address(False, False)
セル範囲 = "a1" & ":" & 右下セル

 Range(セル範囲).Select
Call デモ_2_メイン処理(セル範囲)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_2_メイン処理(セル範囲 As String)
Dim 配列前 As Variant, 配列後 As Variant
配列前 = Split("DATE,NUMBER,ITEM,UNIT PRICE,QUANTITY,AMOUNT,Peaches,Apple,Orange,Grape", ",")
配列後 = Split("納品日,伝票番号,商品,単価,数量,金額,もも,りんご,みかん,ぶどう", ",")
If UBound(配列前) <> UBound(配列後) Then
    MsgBox "置換前と後の、単語の数が異なるので終了します"
    Exit Sub
End If
Dim 番号 As Long
For 番号 = LBound(配列前) To UBound(配列前)
    Selection.Replace What:=配列前(番号), Replacement:=配列後(番号)
Next 番号
End Sub

B 処理するブックの中に、置換のシートをもつ

トップページ ⇒▼検索・置換・2表比較 ⇒【ツール】置換表をつかい、複数の置換を一括処理

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。 

Sub デモ_11() '置換表をつかい、複数の置換を一括処理
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
Range("f100").Select
Selection.End(xlUp).Select
右下セル = Selection.Address(False, False)
セル範囲 = "a1" & ":" & 右下セル 
Range(セル範囲).Select
Call デモ_11_メイン処理(セル範囲)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_11_メイン処理(セル範囲 As String)
Dim 変換表 As Variant
変換表 = Sheets("置換表").Range("A1:B10")
Dim 要素数 As Long
For 要素数 = LBound(変換表, 1) To UBound(変換表, 1)
    Selection.Replace What:=変換表(要素数, 1), Replacement:=変換表(要素数, 2)
Next 要素数
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓