Excel應用實踐21:實現工作簿所有工作表中的多值替換
- 2019 年 10 月 10 日
- 筆記
學習Excel技術,關注微信公眾號:
excelperfect
有兩個工作簿,一個工作簿中存放著要查找並替換成的文本,如下圖1所示,列A中是要查找的文本,將列A中查找到的文本替換成列B中相應的文本,例如,將找到的「Excel」替換成「完美Excel」。

圖1
另一個工作簿中是我們要替換其文本的工作簿,我們要在該工作簿所有工作表中查找上圖1列A中的值並將找到的文本替成列B中的文本,如圖2所示。

圖2
要實現的結果如下圖3所示。

圖3
使用下面的VBA程式碼來完成上述任務。在圖1所示的工作簿中,打開VBE,插入一個標準模組,輸入程式碼:
'查找並替換指定工作簿中的多個文本
Sub MultiFindReplace()
Dim ReplaceListWB As Workbook
Dim ReplaceInWB As Workbook
Dim wks As Worksheet
Dim ReplaceIn As String
Dim ReplaceList As Range
Dim i As Long
'獲取要進行替換文本操作的工作簿
ReplaceIn =Application.GetOpenFilename( _
"要替換文本的工作簿, *.xls?", 1, _
"選擇要替換文本的工作簿")
'如果單擊取消,則退出程式
If ReplaceIn ="False" Then Exit Sub
Application.ScreenUpdating = False
'要替換文本的工作簿
Set ReplaceInWB = Workbooks.Open(ReplaceIn)
'替換文本所在的工作簿
Set ReplaceListWB = ThisWorkbook
'替換文本所在的區域
Set ReplaceList = ReplaceListWB.Worksheets(1). _
Cells(1,1).CurrentRegion
'遍歷要替換文本的工作簿中所有工作表
For Each wks In ReplaceInWB.Worksheets
'使用替換文本來替換工作表中的數據
With ReplaceList
For i = 2 To .Rows.Count
Call wks.UsedRange.Replace( _
.Cells(i,1).Value, _
.Cells(i,2).Value, _
xlPart, ,False)
Next i
End With
Next
'保存並關閉要替換文本的工作簿
ReplaceInWB.Save
ReplaceInWB.Close
Application.ScreenUpdating = False
End Sub
運行程式碼,彈出下圖4所示的對話框,要求選擇要替換文本的工作簿文件。選擇工作簿文件後,將根據上圖1工作表中的文本自動對該工作簿中的文本進行查找和替換操作。

圖4
程式碼的圖片版如下:
