Note: The other languages of the website are Google-translated. Back to English

如何從Excel中的文本字符串中提取第一個/最後一個/第n個單詞?

您是否曾經遇到過需要從工作表中的文本字符串中提取特定單詞的問題? 例如,您需要以下範圍的文本字符串,才能從中獲得第一個/最後一個或第n個單詞,在這裡,我可以討論一些有效的方法來解決該問題。


使用公式從文本字符串中提取名字或姓氏

如果您需要從文本字符串列表中提取第一個單詞,則以下公式可以為您提供幫助。

要提取第一個單詞,請在下面的公式中輸入一個空白單元格,然後根據需要將此單元格的“自動填充”手柄拖動到範圍內。

= IF(ISERR(FIND(“”,A2)),“”,LEFT(A2,FIND(“”,A2)-1))

要從每個單元格中提取最後一個單詞,請應用以下公式:

= IF(ISERR(FIND(“”,A2)),“”,RIGHT(A2,LEN(A2)-FIND(“ *”,SUBSTITUTE(A2,“”,“ *”,LEN(A2)-LEN( SUBSTITUTE(A2,“”,“”)))))))

現在,您將看到從每個單元格中提取了第一個或最後一個單詞。

筆記: 在上述公式中 A2 表示要從中提取第一個或最後一個單詞的單元格。

很難記住長而復雜的公式嗎? 驚人的工具可幫助您提取第n個單詞w僅點擊幾下!

上面的長公式只能提取第一個和最後一個單詞,但是對提取指定的第n個單詞,第二個單詞,第六個單詞等表示提取將無用。即使您可以找出解決問題的公式,這些公式也必須太複雜而無法記憶和應用。 在這裡,建議使用Kutools for Excel的“在單元格中提取第n個單詞”功能,它將幫助您盡可能輕鬆地提取第n個單詞!


Excel的Kutools - 包括 300 多個方便的 Excel 工具。 全功能免費試用 30-天,無需信用卡! 立即行動吧!

使用用戶定義函數從文本字符串中提取第n個單詞

如果要從文本字符串中提取第二,第三或第n個單詞,則可以創建一個用戶定義的函數來處理它。

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications窗口.

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊 窗口。

Function FindWord(Source As String, Position As Integer)
'Update 20131202
Dim arr() As String
arr = VBA.Split(Source, " ")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
    FindWord = ""
Else
    FindWord = arr(Position - 1)
End If
End Function

3。 然後保存代碼,在此示例中,我將從字符串中獲得第三個單詞,因此鍵入此公式 = findword(A2,3) 放入空白單元格B2中,然後根據需要將該單元格的“自動填充”手柄拖動到範圍內。 看截圖:

備註: 在上式中 A2 是您要從中提取單詞的單元格,數字 3 表示您將提取的字符串中的第三個單詞,您可以根據需要進行更改。


從文本字符串中提取每個單詞,然後水平或垂直列出

該方法將介紹Kutools for Excel的 分裂細胞 實用程序從文本字符串單元格提取每個單詞,然後根據需要水平或垂直列出提取的單詞。

Excel的Kutools - 包括 300 多個方便的 Excel 工具。 全功能免費試用 30-天,無需信用卡! 立即免費試用!

1。 選擇您將從中提取單詞的文本字符串單元格,然後單擊 庫工具 > 合併與拆分 > 分裂細胞.

2。 在打開的“拆分單元格”對話框中,在 類別 部分,檢查 宇宙 在選項 指定分隔符 部分,然後單擊 Ok 按鈕。 看截圖:

3。 現在指定要將提取的單詞輸出到的目標範圍,然後單擊 OK 按鍵

如果您檢查了 拆分為列 在上面的“拆分單元格”對話框中的“選項”中,每個單詞都從每個文本字符串中提取出來並垂直列出。

如果您檢查了 拆分為行 在上面的“拆分單元格”對話框中的“選項”中,將從每個文本字符串中提取每個單詞並水平列出。


使用出色的工具從Excel中的文本字符串中提取第n個單詞

如果您已安裝Kutools for Excel,則可以使用其公式助手>提取單元格中的第n個單詞來輕鬆快速地從指定的單元格中提取第n個單詞。

Excel的Kutools - 包括 300 多個方便的 Excel 工具。 全功能免費試用 30-天,無需信用卡! 立即免費試用!

1。 選擇將提取的單詞放在其中的單元格,然後單擊 庫工具 > 公式助手 > 公式助手 啟用此功能。

2。 在“公式幫助器”對話框中,請執行以下操作:
(1)選擇 文本 來自 配方類型 下拉列表;
(2)單擊以突出顯示 提取單元格中的第n個單詞選擇一個公式 列錶框;
(3)在 細胞 框中,指定要從中提取單詞的單元格;
(4)在 第N個 框中,指定編號。

3。 點擊 Ok 按鈕。 如有必要,請拖動公式單元格的“自動填充手柄”,然後將公式複製到其他單元格中。


演示:從文本字符串中提取每個單詞,然後水平或垂直列出


Excel的Kutools 包含 300 多種 Excel 便捷工具,30 天內免費試用,無限制。 立即下載並免費試用!

相關文章:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (38)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
那個vba代碼太棒了,非常感謝。
網站主持人對此評論進行了最小化
這個用戶定義的函數太棒了! 非常感謝分享它。
網站主持人對此評論進行了最小化
非常感謝! 工作得很好! :-)
網站主持人對此評論進行了最小化
這非常有用,我想知道是否有人知道我可以使用的有用的手工製作功能的可下載或可複制和可粘貼列表,例如“FindWord”。
網站主持人對此評論進行了最小化
嗨,我只是想知道我還可以在 Visual Basic 公式中插入什麼,這些公式可以在數據之後立即提取和逗號或破折號.. 例如 Fortin-
網站主持人對此評論進行了最小化
嗨,這太棒了。 它工作得很好,減少了我們的壓力,在這個操作中節省了大量時間。 感謝所有為此工作並分享...
網站主持人對此評論進行了最小化
好一個。 這工作得很好
網站主持人對此評論進行了最小化
嗨,這真的節省了很多時間。 感謝分享 有人也可以建議我們如何以相反的方式用vba提取單詞,例如最後一個單詞是1,從右到左的第二個單詞是2等等。 這將不勝感激。
網站主持人對此評論進行了最小化
這不適用於由非單詞組成的源字符串(如供應商名稱後跟部件號)
網站主持人對此評論進行了最小化
我們如何更改單元格中第 n 個單詞的字體
網站主持人對此評論進行了最小化
非常感激。 這對我幫助很大。
網站主持人對此評論進行了最小化
嗨,謝謝你的代碼。 它啟發了我擴大一點。 在接下來的行中,您可以選擇:最後一個單詞 (0)、一個但最後一個 (-1)、倒數第二個 (-2) 等。無論單詞數如何。 Function FindWord(Source As String, Position As Integer) 'Update 20150504 Dim arr() As String arr = VBA.Split(Source, " ") xCount = UBound(arr) Select Case Position Case -xCount To 0 FindWord = arr(xCount + Position) Case 1 To (xCount + 1) FindWord = arr(Position - 1) Case Else FindWord = "" End Select End Function
網站主持人對此評論進行了最小化
嗨,昨天只是對代碼的補充。 這添加了一個額外的行來調整源字符串中的冗餘空格: arr = VBA.Split(WorksheetFunction.Trim(Source), " ") 問候,Allart
網站主持人對此評論進行了最小化
謝謝,艾倫,這太好了,謝謝! :)
網站主持人對此評論進行了最小化
非常感謝你!!
網站主持人對此評論進行了最小化
嗨..感謝您的代碼,我有列表句子,其中一個只有 1 個單詞,如果只有 1 個單詞,您的代碼將無法正常工作。
網站主持人對此評論進行了最小化
如果我的列表中的某些單元格中只有一個單詞,我無法讓第一個單詞的代碼起作用。 例如第一個單詞--->第一個第二個---> [null]最後一個單詞--->最後一個
網站主持人對此評論進行了最小化
試試這個(見我上面的回复): Function FindWord(Source As String, Position As Integer) ' 得到第一個、第二個、last(1)、倒數第二個(-2) 等,來自字符串的單詞 ' 更新 0 Dim arr( ) As String arr = VBA.Split(WorksheetFunction.Trim(Source), " ") xCount = UBound(arr) Select Case Position Case -xCount To 2 FindWord = arr(Position + xCount) Case 20150505 To xCount + 0 FindWord = arr (位置 - 1) Case Else FindWord = "" End Select
網站主持人對此評論進行了最小化
嗨極客,我有一個這樣的單元格:1 ABCD; 2個DEDF; 1 個 DED#3d; 4個FDWDS; 1 ED 我想在 1 之後提取字符。所以希望得到如下結果:ABCD;DED#3d;ED
網站主持人對此評論進行了最小化
我有 64 位 Excel 2013 並且缺少 Morefunc 插件。 基於上面的代碼,我想出了這個替代 Morefunc 的 WMID 函數的方法。 如果有比我更專業的人能對它進行任何整理,我將不勝感激。 函數 WMid1(Source As String, Optional Position As Integer, Optional WordCount As Integer, Optional Separator As String) Dim arr() As String Dim xCount As Integer Dim wCount As Integer Dim wFirst As Integer Dim wLast As Integer If Position = 0 Then Position = 1 If WordCount = 0 Then WordCount = 1 If Separator = "" Then Separator = " " arr = VBA.Split(Trim(Source), Separator) xCount = UBound(arr) + 1 If Position < 1 Then wFirst = Application。 Max(xCount + Position - WordCount + 1, 0) wLast = xCount + Position Else wFirst = Position - 1 wLast = Application.Min(xCount - 1, Position + WordCount - 2) End If xCount < 2 or Abs(Position) > xCount Then WMid1 = "" Else WMid1 = arr(wFirst) For wCount = wFirst + 1 To wLast WMid1 = WMid1 & Separator & arr(wCount) Next End If WMid1 = Trim(WMid1) End Function
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護