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

程式碼的圖片版如下:

Tags: