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

如何在Excel中的文本字符串中找到字符的第n個出現(位置)?

例如,單元格A1中有一個很長的句子,請參見以下屏幕截圖。 現在,您需要從單元格A3中的文本字符串中找到字符“ c”的第1個出現位置。 當然,您可以一一計算字符,並獲得準確的位置結果。 但是,這裡我們將介紹一些簡單的技巧,以從單元格中的文本字符串中查找特定字符的第n個出現或位置。


使用“查找”公式查找單元格中字符的第n個出現(位置)

有兩個“查找”公式可以幫助您從單元格中的文本字符串中快速查找特定字符的第n個出現或位置。

下面的公式將向您顯示如何在單元格A3中查找“ c”的第三次出現。

查找公式1

在空白單元格中,輸入公式 = FIND(“ c”,A1,FIND(“ c”,A1)+2).

doc在文本字符串2中找到第n個位置

然後按 Enter 鍵。 已顯示第三個字母“ c”的位置。

備註:您可以根據需要更改公式中的2。 例如,如果要查找“ c”的第四個位置,可以將2更改為3。如果要找到“ c”的第一個位置,則將2更改為0。

找出公式2

在空白單元格中,輸入公式 = FIND(CHAR(1),SUBSTITUTE(A1,“ c”,CHAR(1),3)),然後按 Enter 鍵。

備註:公式中的“ 3”表示第三個“ c”,您可以根據需要進行更改。


計算單詞在Excel單元格中出現的次數

通常,如果一個單詞在一個需要計數的單元格中出現幾次,則可以將它們一一計數。 但是,如果單詞出現數百次,則手動計數很麻煩。 的 計算單詞出現的次數 功能 Excel的Kutools's 公式助手 小組可以快速計算單詞在單元格中出現的次數。 免費試用,具有全部功能 30 天!
 
Kutools for Excel:擁有超過 300 個方便的 Excel 加載項,免費試用,不受限制 30 天。

> 使用VBA查找單元格中字符的第n個出現位置(位置)

實際上,您可以應用VB宏輕鬆地在一個單元格中找到第n個出現或特定字符的位置。

步驟1:按住 ALT + F11 鍵,然後打開 Microsoft Visual Basic for Applications 窗口。

步驟2:點擊 插入 > 模塊,然後將以下宏粘貼到“模塊窗口”中。

VBA:找到字符的第n個位置。

Function FindN(sFindWhat As String, _
sInputString As String, N As Integer) As Integer
Dim J As Integer
Application.Volatile
FindN = 0
For J = 1 To N
FindN = InStr(FindN + 1, sInputString, sFindWhat)
If FindN = 0 Then Exit For
Next
End Function

步驟3:現在,如果要查找單元格A1中第三個“ c”位置的確切位置,請輸入公式 = FindN(“ c”,A1,3),然後按 Enter 鍵。 然後它將立即返回特定單元格中的確切位置。


使用Kutools for Excel在單元格中查找字符的第n個出現(位置)

如果您不喜歡公式和VBA,則可以嘗試使用方便的工具- Excel的Kutools,其 公式 組,您可以找到一個實用程序– 查找第n個出現的字符 快速返回單元格中字符的第n個位置。

Excel的Kutools, 與以上 300 方便的功能,使您的工作更加輕鬆。 

免費安裝 Kutools for Excel,請執行以下操作:

1.選擇要返回結果的單元格,然後單擊 庫工具 > 公式助手 > 公式助手 。 看截圖:

2.然後在彈出 公式助手 對話框,請執行以下操作:

1)選擇 查找 從下拉列表中選擇 公式類型 部分;

2)選擇 查找字符在字符串中出現在第N個位置的位置 in 選擇一個公式 部分;

3)選擇包含您使用的字符串的單元格,然後在指定的文本框中鍵入指定的字符和第n個出現的位置 參數輸入 部分。

3。 點擊 Ok。 然後,您將獲得字符串中第n個出現字符的位置。

 


最佳辦公效率工具

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底部

 

按評論排序
留言 (28)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
查找公式 1 將不起作用。 Find 函數的第三個參數是開始搜索的索引(如:忽略字符串的前 x 個字符)。 即,如果字符串在索引 1、5 和 10 處包含字母 c,則結果如下: =FIND("c",A1,1) 將找到第一個 c =FIND("c",A1,2) 到 = FIND("c",A1,5) 將找到第二個 c =FIND("c",A1,6) 通過 =FIND("c",A1,10) 將找到第三個 c。 上面的任何東西都找不到。
網站主持人對此評論進行了最小化
感謝您發現這個錯誤,對不起,公式1是錯誤的,正確的公式應該是 = FIND(“ c”,A1,FIND(“ c”,A1)+2) ,如果你想找到第一個字母“c”,你只需要把2改為0。
網站主持人對此評論進行了最小化
正如 DdW 所指出的,“+2”或“+0”或what-have-you 是“硬編碼”字符位置; 您必須已經知道“c”在哪裡才能找到它。 不過,公式 2 是正確的:將目標字符串的第 n 個實例替換為不會出現在文本其餘部分中的唯一字符,然後找到該唯一字符。
網站主持人對此評論進行了最小化
我能夠找到第二個實例,但是第 3、第 4 和第 n 個實例呢? 我無法獲得第三個實例(以及第四個)。 我有包含 3 到 4 個實例的數據。 所以我該怎麼做?
網站主持人對此評論進行了最小化
sanjeev,正如我兩年前所說,使用公式 2: =FIND(CHAR(1),SUBSTITUTE("LOOK_IN","LOOK_FOR",CHAR(1),INST_NUM)) 其中 LOOK_IN 是您的字符串(或單元格)重新搜索; LOOK_FOR 是您要搜索的字符串; INST_NUM 是您要識別的 LOOK_FOR 的整數實例。 因此, =FIND(CHAR(1),SUBSTITUTE("HELLO WORLD","L",CHAR(1),3) 將返回 10(第三個“L”的位置)。
網站主持人對此評論進行了最小化
親愛的大家,我想從一個單元格中選擇一個特定的字符串示例:- 我的名字是 Mohit 我想返回任何值就像 mohit,是,名字,我使用一個函數。 有沒有功能
網站主持人對此評論進行了最小化
我認為沒有特定的功能,因為 Excel 不是為處理一個單元格中的值列表而構建的。 您可以通過將上述函數與 LEFT() 和 RIGHT() 組合來自己構建函數。 或者你當然可以使用 VBscripting。
網站主持人對此評論進行了最小化
在玩了一些之後,我得到了以下內容來找到 X 的第三個實例並返回位置編號。 =FIND("X",A1,(FIND("X",A1,FIND("X",A1,1)+1))+1) VBA 模塊得到了我的投票。 更容易記住
網站主持人對此評論進行了最小化
當然可以,但是您可以無限期地將公式嵌套在“實例編號”參數中。 Formula 2 避免了 VBA,使其成為最佳的全方位解決方案。
網站主持人對此評論進行了最小化
Try this: =INDEX(SMALL(IF(MID(A1,MATCH(ROW(INDIRECT(1&":"&LEN(A1))),ROW(INDIRECT(1&":"&LEN(A1))),0),1)="c",MATCH(ROW(INDIRECT(1&":"&LEN(A1))),ROW(INDIRECT(1&":"&LEN(A1))),0),""),MATCH(ROW(INDIRECT(1&":"&LEN(A1)-LEN(SUBSTITUTE(A1,"c","")))),ROW(INDIRECT(1&":"&LEN(A1)-LEN(SUBSTITUTE(A1,"c","")))),0)),2) 其中“c”是所需的字符,並且 2 是位置。 請注意,這是一個數組公式。
網站主持人對此評論進行了最小化
this is simpler: =INDEX(SMALL(IF(MID(A1,ROW(INDIRECT(1&":"&LEN(A1))),1)="c",ROW(INDIRECT(1&":"&LEN(A1))),""),ROW(INDIRECT(1&":"&LEN(A1)-LEN(SUBSTITUTE(A1,"c",""))))),2)
網站主持人對此評論進行了最小化
大家好,我在 Excel 單元格中有一個文本“23 floyd lane, longville,KN 14564”我需要一個函數來提取“longville”謝謝
網站主持人對此評論進行了最小化
如果必須使用函數,請嘗試: =TRIM(MID(A1,SEARCH(",",A1)+1,SEARCH("!@#",SUBSTITUTE(A1,",","!@#",2 ))-SEARCH(",",A1)-1)) 否則,您可能會考慮 Data > Text to Columns > Delimited(使用逗號作為分隔符)。
網站主持人對此評論進行了最小化
公式 1 不適用於第四、第五、第六等,因此 (+3,4,5) 將始終顯示字母“c”的第三個位置,即 19 第二個公式正在工作。
網站主持人對此評論進行了最小化
大家好,
我在 Excel 單元格中有一個文本“BY TRANSFER-NEFT*HDHC0065431*N053112345624801*K0038331*krishna--”
我需要一個函數來提取“N053112345624801”
網站主持人對此評論進行了最小化
大家好,

我在 Excel 單元格中有一個文本“BY TRANSFER-NEFT*HDFC0000001*N08745987123546*J0032331*KUMAR--”

我需要一個函數來提取“N08745987123546”

謝謝
網站主持人對此評論進行了最小化
你好,要不要把No後面的數字提取出來,並且數字的個數是固定的? 如果是這樣,您可以使用 Kutools for Exccel 的提取文本功能,輸入 No????進行提取。
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
第一個公式完全沒有用而且是錯誤的,但它在這個例子中是正確的,因為第一個和第二個“c”是相鄰的。 正確的公式是:


對於第二次出現 -
= FIND(“ c”,A1,FIND(“ c”,A1)+1)

對於第 3 次出現 -
=FIND("c",A1,FIND("c",A1,FIND("c",A1)+1)+1) 等等...
網站主持人對此評論進行了最小化
第一個公式在我的版本中是正確的,在註釋中,它解釋瞭如何找到第三個或第四個或第 n 個“c”。

注意:您可以根據需要更改公式中的2。 例如,如果要查找“c”的第四個位置,可以將 2 更改為 3。如果要查找“c”的第一個位置,則應將 2 更改為 0。
網站主持人對此評論進行了最小化
嘗試用我上面評論的第一句話作為字符串,使用第一個公式找出第二個 c 的位置。 你會知道它有多正確!
網站主持人對此評論進行了最小化
絕對同意。 +2 或 +3 等......完全取決於“c”的 n 和 (n+1) 次出現之間的間距。 因此,例如,如果您嘗試將此公式複製到一列中,則必須手動調整每個單元格。 與手動計數基本相同。


前任。 讓我們嘗試使用提供的公式在單元格 A4 中找到“c”的第 1 次出現。 根據文章,我們應該在嵌套的 FIND 函數中使用 +3 來查找第 4 次出現。


單元格 A1 中的文本:

“出租車汽車 abc 科爾立方體”

手動計算,第 4 次出現是 cole 中第 13 個字符位置的“c”。


= FIND(“ c”,A1,FIND(“ c”,A1)+3)

嵌套函數 FIND("c",A1) 將在位置 1 中找到“c”的第一次出現。

因此,

查找(“c”,A1)+3 = 1+3 = 4

將其代入我們的公式,

=FIND("c",A1,FIND("c",A1)+3) = FIND("c",A1,1+3) = FIND("c",A1,4)

這個新公式將從字符位置 4 開始查找“c”的第一次出現。字符串中的第 4 個字符是 cab 之後的空格。

因此,公式將找到汽車中的“c”,並為我們的公式返回值 5。 從手動計數中我們知道,我們正在尋找 13 作為輸出。
網站主持人對此評論進行了最小化
"Substitute" 可以讓您找到第 N 次出現的術語,因此將其與 "find" 組合如下(其中 5=第 5 次出現):

= FIND(CHAR(1),SUBSTITUTE(A1,“ c”,CHAR(1),5))
網站主持人對此評論進行了最小化
這是正確答案! 請用這一行代碼替換整篇文章.....
網站主持人對此評論進行了最小化
出色的! 我很高興在發布自己的評論後向上滾動查看其他評論。
網站主持人對此評論進行了最小化
要處理公式的異常,您可以使用相同的 if 和 iserro
=IF(ISERR(FIND("c",A1,FIND("c",A1)+2)),FIND("c",A1,FIND("c",A1)+0),FIND("c",A1,FIND("c",A1)+2))
網站主持人對此評論進行了最小化
發現公式1是不完美的。 如果它被刪除,這將是一個很大的幫助。 我已經浪費了很多時間來嘗試在“vedanarayanan”中第四次出現“a”謝謝。
網站主持人對此評論進行了最小化
您在字符串中查找第 N 次出現的字符的公式不起作用。 使用您的示例,將 2 添加到嵌入查找的結果可確保初始查找超出第一個兩個 c 的位置的起始位置,但將 +1 更改為 +2 不會產生第四個“c”的位置,它只需在字符串深處開始搜索一個字符,結果仍然是第三個“c”。 要找到第 3 個“c”,搜索必須從第 4 個“c”的位置開始。 我期待您的新解決方案。
網站主持人對此評論進行了最小化
你好,大衛

是的,正如您所說,第一個公式無法正常工作,您可以應用第二個公式:
=FIND(CHAR(1),SUBSTITUTE(A2,"c",CHAR(1),2))

備註:公式中的數字“2”表示第二個“c”,如果要得到第三個、第四個“c”,只需將數字2改為3,4即可。
請嘗試,希望對您有所幫助!
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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