正文 巧妙提取文件中的指定內容(1 / 1)

巧妙提取文件中的指定內容

職場

作者:大江東去

Excel 2013,這個版本提供了強大的“快速填充”功能,但由於樣本工作表的中文內容位置並不規範,因此在使用快速填充之後並沒有得到滿意的結果,難道隻能手工提取嗎?其實我們可以換一種思路來解決。

巧妙提取工作表的中文名稱

同事小秦前來求助,她需要將工作表各個單元格的中文名稱提取出來,但樣本工作表的中文內容位置並不規範,在使用快速填充之後並沒有得到滿意的結果。

方法一:通過Word進行中轉

將工作表複製之後粘貼到Word窗口,粘貼時請選擇“保留源格式”,按下“Ctrl+H”組合鍵打開“查找和替換”對話框,切換到“替換”選項卡,點擊“更多”按鈕切換到高級模式,查找內容設置為“[^1-^127]”,這裏的“[^1-^127]”表示所有西文字符,“替換為”不需要填寫內容,勾選“使用通配符”複選框,點擊“全部替換”,最後再將提取出來的內容粘貼回Excel工作表即可。

方法二:利用VBA代碼

按下“Alt+F11”組合鍵,打開Microsoft Visual Basic for Applications窗口,依次選擇“插入/模塊”,在右側窗格插入一個空白模塊,輸入如下代碼:

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”可以任意更改,檢查無誤之後,選擇“文件/關閉並返回到Microsoft Excel”命令,返回Excel主界麵,按下“Alt+F8”組合鍵,打開“宏”對話框,選擇並運行“test”宏,很快就可以完成中文名稱的提取,如果需要將提取的內容放在其他列,可以更改“ Cells(m.Row, "C")”的“C”。

巧妙提取單元格中的指定內容

同事前來求助,他希望將A列的數字代碼和文字科目分別提取到B列、C列,如果采取純手工的方法,操作相當繁瑣。其實,我們利用公式即可解決上述問題。

在B1單元格輸入數組公式:=-LOOKUP(1,-LEFT(A1,ROW($1:$15))),輸入完成之後在編輯欄按下“Ctrl+Shift+Enter”組合鍵,可得“119301”的結果,拖拽填充柄;在C1單元格輸入公式:=SUBSTITUTE(A1,B1,),執行之後可得“往來中轉/通郵賠”的結果,拖拽填充柄。

其實,我們還可以利用Excel 2013的“快速填充”功能實現:在B1單元格手工輸入“119301”,選中B列的相應單元格區域,切換到“數據”選項卡,單擊“數據工具”功能組的“快速填充”按鈕,按照類似的步驟可以提取A列單元格的文字科目,較使用公式更為簡單。