Excel 2013,這個版本提供了強大的“快速填充”功能,但由于樣本工作表的中文內(nèi)容位置并不規(guī)范,因此在使用快速填充之后并沒有得到滿意的結(jié)果,難道只能手工提取嗎?其實我們可以換一種思路來解決。
巧妙提取工作表的中文名稱
同事小秦前來求助,她需要將工作表各個單元格的中文名稱提取出來(如圖1),但樣本工作表的中文內(nèi)容位置并不規(guī)范,在使用快速填充之后并沒有得到滿意的結(jié)果。
方法一:通過Word進行中轉(zhuǎn)
將工作表復(fù)制之后粘貼到Word窗口,粘貼時請選擇“保留源格式”,按下“Ctrl+H”組合鍵打開“查找和替換”對話框,切換到“替換”選項卡,點擊“更多”按鈕切換到高級模式,查找內(nèi)容設(shè)置為“[^1-^127]”,這里的“[^1-^127]”表示所有西文字符,“替換為”不需要填寫內(nèi)容,勾選“使用通配符”復(fù)選框,點擊“全部替換”(如圖2),最后再將提取出來的內(nèi)容粘貼回Excel工作表即可。
方法二:利用VBA代碼
按下“Alt+F11”組合鍵,打開Microsoft Visual Basic for Applications窗口,依次選擇“插入/模塊”,在右側(cè)窗格插入一個空白模塊(如圖3),輸入如下代碼:
Sub test()
Dim reg, m
Set reg = CreateObject(\"VBScript.RegExp\")
reg.Global = True
reg.Pattern = \"[A-Z]?[^!-~ (]+\"
For Each m In [A1:A24]
Cells(m.Row, \"C\") = reg.Execute(m)(0)
Next m
End Sub
上述代碼中的“test”可以任意更改,檢查無誤之后,選擇“文件/關(guān)閉并返回到Microsoft Excel”命令,返回Excel主界面,按下“Alt+F8”組合鍵,打開“宏”對話框,選擇并運行“test”宏,很快就可以完成中文名稱的提取,如果需要將提取的內(nèi)容放在其他列,可以更改“ Cells(m.Row, \"C\")”的“C”。
巧妙提取單元格中的指定內(nèi)容
同事前來求助,他希望將A列的數(shù)字代碼和文字科目分別提取到B列、C列,如果采取純手工的方法,操作相當(dāng)繁瑣。其實,我們利用公式即可解決上述問題。
在B1單元格輸入數(shù)組公式:=-LOOKUP(1,-LEFT(A1,ROW($1:$15))),輸入完成之后在編輯欄按下“Ctrl+Shift+Enter”組合鍵,可得“119301”的結(jié)果,拖拽填充柄;在C1單元格輸入公式:=SUBSTITUTE(A1,B1,),執(zhí)行之后可得“往來中轉(zhuǎn)/通郵賠”的結(jié)果,拖拽填充柄(如圖4)。
其實,我們還可以利用Excel 2013的“快速填充”功能實現(xiàn):在B1單元格手工輸入“119301”,選中B列的相應(yīng)單元格區(qū)域,切換到“數(shù)據(jù)”選項卡,單擊“數(shù)據(jù)工具”功能組的“快速填充”按鈕(如圖5),按照類似的步驟可以提取A列單元格的文字科目,較使用公式更為簡單。