最後一個字

乍一看,一個簡單的問題,一個不明顯的解決方案: 從一行文本中提取最後一個單詞. 好吧,或者,在一般情況下,最後一個片段,由給定的分隔符(空格、逗號等)分隔。換句話說,有必要在 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 函數從文本中提取第一個單詞

發表評論