乍一看,一個簡單的問題,一個不明顯的解決方案: 從一行文本中提取最後一個單詞. 好吧,或者,在一般情況下,最後一個片段,由給定的分隔符(空格、逗號等)分隔。換句話說,有必要在 a 的字符串中實現反向搜索(從頭到尾)給定字符,然後提取它右側的所有字符。
讓我們看一下傳統的幾種選擇方式:公式、宏和通過 Power Query。
方法 1. 公式
為了更容易理解公式的本質和機制,讓我們從遠處開始。 首先,讓我們將源文本中單詞之間的空格數增加到例如 20 個。 您可以使用替換功能來做到這一點。 替代 (代替) 以及重複給定字符 N 次的功能—— REPEAT (重複):
現在我們使用函數從結果文本的末尾截掉 20 個字符 RIGHT (對):
天氣越來越熱了,對吧? 仍然使用該功能刪除多餘的空格 TRIM (修剪) 問題將得到解決:
在英文版中,我們的公式將如下所示:
=TRIM(RIGHT(替代(A1;» «;REPT(» «;20));20))
我希望很清楚,原則上不需要恰好插入 20 個空格——任何數字都可以,只要它超過源文本中最長單詞的長度即可。
如果源文本不需要用空格分隔,而是用另一個分隔符(例如,用逗號),那麼我們的公式需要稍微修正一下:
方法二、宏功能
從文本中提取最後一個單詞或片段的任務也可以使用宏來解決,即在 Visual Basic 中編寫一個反向搜索函數,它會做我們需要的——在相反方向搜索字符串中的給定子字符串——從結束到開始。
按鍵盤快捷鍵 其他+F11 或按鈕 Visual Basic中 選項卡 開發人員 (開發商)打開宏編輯器。 然後通過菜單添加一個新模塊 插入 - 模塊 並在那裡複製以下代碼:
Function LastWord(txt As String, Optional delim As String = " ", Optional n As Integer = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) End Function
現在您可以保存工作簿(以啟用宏的格式!)並按以下語法使用創建的函數:
=LastWord(txt ; delim ; n)
哪裡
- TXT - 帶有源文本的單元格
- 德林 — 分隔符(默認 — 空格)
- n - 應該從末尾提取什麼單詞(默認情況下 - 從末尾開始)
隨著未來源文本的任何更改,我們的宏函數將像任何標準 Excel 工作表函數一樣即時重新計算。
方法 3. 電源查詢
電源查詢 是 Microsoft 的一個免費插件,用於從幾乎任何來源將數據導入 Excel,然後將下載的數據轉換為任何形式。 這個加載項的強大功能和酷炫功能非常強大,以至於微軟默認將其所有功能都內置到 Excel 2016 中。 Excel 2010-2013 Power Query 可以從這裡免費下載。
我們使用 Power Query 通過給定分隔符分隔最後一個單詞或片段的任務很容易解決。
首先,讓我們使用鍵盤快捷鍵將我們的數據表變成智能表。 按Ctrl+T 或命令 主頁 – 格式為表格 (首頁——表格格式):
然後我們使用命令將創建的“智能表”加載到 Power Query 中 從表/範圍 (來自表格/範圍) 選項卡 數據 (如果您有 Excel 2016)或在選項卡上 電源查詢 (如果您有 Excel 2010-2013):
在打開的查詢編輯器窗口中的選項卡上 轉型 (轉換) 選擇一個團隊 拆分列 - 按分隔符 (拆分列 - 按分隔符) 然後它仍然設置分隔符並選擇選項 最右邊的分隔符不刪減所有單詞,只刪最後一個:
點擊後 OK 最後一個單詞將被分隔到一個新列中。 可以通過右鍵單擊其標題並選擇來刪除不必要的第一列 清除 (刪除). 您還可以重命名表標題中的剩餘列。
可以使用命令將結果上傳回工作表 主頁 — 關閉並加載 — 關閉並加載到… (首頁 - 關閉並加載 - 關閉並加載到...):
結果我們得到:
像這樣——便宜又開朗,沒有公式和宏,幾乎不用觸摸鍵盤🙂
如果將來原始列表發生變化,右鍵單擊或使用鍵盤快捷鍵就足夠了 按Ctrl+其他+F5 更新我們的請求。
- 將粘性文本拆分為列
- 使用正則表達式解析和解析文本
- 使用 SUBSTITUTE 函數從文本中提取第一個單詞