【VBA】シート1の文字列をシート2のリストに合わせて置換する
2017/02/26
概要
エクセルのシートで、Sheet1のセルにある文字列を、Sheet2にある置換リストに合わせて一括置換するマクロです。
コード内容
Option Explicit Sub 文字列リストに基づき連続して置換する() Dim i As Long, x1 As String, x2 As String Application.ScreenUpdating = False '描画停止 i = 2 Do x1 = Sheets("Sheet2").Cells(i, 1) x2 = Sheets("Sheet2").Cells(i, 2) Sheets("Sheet1").Cells.Replace _ What:=x1, Replacement:=x2, LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=True i = i + 1 Loop Until Sheets("Sheet2").Cells(i, 1) = "" Application.ScreenUpdating = True '描画停止解除 MsgBox "置換完了" End Sub
コードの説明
かなり簡単というかシンプルなコードです。
まず最初に高速化のために
Application.ScreenUpdating = False '描画停止
を入れています。まぁデータ量が多くなるとここらへんもバカにできないくらいの差になってきますしね。
で、Sheet1のデータの形式は特に問わないんですが、Sheet2の置換リストは
検索文字列 | 置換文字列 |
0 | りんご |
1 | みかん |
2 | バナナ |
3 | ぶどう |
4 | いちご |
という形になっている必要があります。
ここで
Sheets("Sheet1").Cells.Replace _ What:=x1, Replacement:=x2, LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=True
というコードを使ってSheet2にある置換リストの内容(検索文字列、置換文字列)を上から順に部分一致で実行していくような感じです。
用途も多くてけっこう便利だと思うのでぜひご活用いただければ幸い。
VBAのIE操作を覚えるのに一番良いと思う本(ぼくはこれで覚えました)
近田 伸矢,植木 悠二,上田 寛 インプレス 2013-04-19