俞木發(fā)
如果需要替換一組數據,可以借助“*”號進行模糊查找,然后再進行批量替換。比如下表中要將成績小于60的數據全部替換為“需補考”,打開“查找和替換”后在“查找內容”框中輸入“*”,點擊“查找全部”,然后在下方的窗格中點擊“值”,這樣表中學生所有科目的成績會自動排序,按提示選中分數小于60的數據,接著在“替換為”中輸入“需補考”,最后點擊“全部替換”即可(圖1)。
利用類似的方法,我們可以很方便地批量選中符合條件的不連續(xù)數據,比如現在需要將小于60分的數據全部填充為黃色,在選中所有符合條件的數據后,點擊“開始一填充顏色一黃色”即可。這樣,以后就可以使用“查找一格式一從單元格中選中格式”,快速找到填充色是黃色的單元格,還可以對這些單元格中的數據進行批量替換操作,比如將字體顏色設置為紅色,或者添加邊框等操作(圖2)。
上述方法適合于將多個不同的數據批量替換為一類名稱。如果有多個數據需要替換為對應的種類,就不適用了。比如某公司由于技術標準改變,需要將原來文檔中的舊標準,如GX-ZZ-201801更改為FJGX-201801CBZZ,即將原來標準中的GX替換為FJGX,ZZ-201801替換為201 801 CBZZ,因為每個標準字符都不相同,利用Excel的查找替換效率極低。對于類似格式的字符替換,可以使用智能填充來快速實現。首先在B1中按照A1的替換格式輸入FJGX-201801CBZZ,接著按下Ctrl+E,這樣Excel會根據A1、B1的格式對比智能地確定內容,并向下進行填充,最后將A列刪除即可。這樣省去了每個字符都要查找替換的麻煩(圖3)。
如果需要替換的多個數據的格式并不相同,比如“FJ-GX01-dzi01”要替換為“FJ-GX01/zj01”(即將代碼中的第二個“-”更改為“/”)(圖4),因為第二個“-”在原始數據中的位置并不相同,而且代碼格式也不同,使用智能填充無法完成快速替換(當然內置替換組件也無法選擇指定“-”進行替換),對于類似的替換可以借助于Replace函數來實現。在C1輸入公式“=REPLACE(A1,FIND("-",A1,6),1,"/")”,接著向下填充即可完成替換操作(圖5)。
公式解釋:
先使用Find函數查找第二個“-”的位置,這里要注意觀察原始數據中第二個“-”的位置特性。比如在數據中第一個“-”的最小位置是在第3個字符(即FJ-),最大位置則為第5個字符(即AGER-),因此需要使用FIND("-"A1,6),表示從A1的第6個字符開始搜索“-”的位置,這樣才能找到第二個“-”的正確位置,同時返回整數值作為Replace開始替換的位置。比如“=FIND("-",A1,6)”返回的數字是“8”,REPLACE(A1,8,1,"/"),表示從A1的第8個字符(即第二個“-”)開始替換,替換1個字符,替換符號是“/”。
上述方法適合于單個文檔的替換,如果需要替換的文檔很多,比如在某個工作簿中原來有很多中文名稱,如“一分部”、“二分部”等,由于錄入管理系統無法識別中文,現在需要將所有中文使用相應的拼音替代。這時,使用上述函數替換就不方便,可以借助VBA腳本進行快速替換。
首先整理好需要替換的所有字符,在當前工作表的名稱上右擊并選擇“查看代碼”,打開VB編輯窗口,在第一個下拉框中選擇Worksheet,第二個下拉框中選擇BeforeDoubleClick,在其中輸入圖中顯示的代碼(實際使用時請自行替換字符,每個需替換字符一行,代碼下載:http:∥dwz.date/bU E5,提取碼:kubg),點擊“運行”就可以完成所有替換(圖6)。
由于VB支持正則表達式,我們可以靈活地使用它來進行各種替換。比如為了便于及時記賬,公司食堂采購人員經常使用手機便簽,使用諸如“2020.06.03購買冬瓜123元”的格式記賬,這些記錄導入電腦后,需要使用時間和金額格式進行替換(圖7)。為此,先到http:∥suo.im/510iHg(提取碼:pxyf)下載所需的代碼,打開VB編輯窗口,輸入下載到的代碼,點擊“運行”即可。也可以將其保存為宏工作簿使用,這樣以后需要替換類似的數據時,只要點擊“開發(fā)工具→宏→數據轉換”即可(圖8)。