如何在 Excel 中找出某字元首次出現、最後一次出現的位置,以及總共出現的次數?
在許多資料處理任務中,您可能會遇到包含特殊字元(例如連字號「——」)的文字字串清單,並需要找出該字元首次、末次或第 n 次出現的位置。無論是根據分隔符提取資訊、分析零件編號,還是拆分資料元件,精確定位特定字元在字串中的位置都是常見需求。然而,Excel 並未內建可直接傳回儲存格中字元首次、末次或第 n 次出現位置的函數。本文將介紹多種實用技巧與逐步解決方案,協助您準確找出這些位置,輕鬆應對各種資料解析與準備需求。

使用公式找出字元的最後一次出現位置
若您想找出文字字串中特定字元(例如「——」)最後一次出現的位置,Excel 的標準函數無法直接實現此功能。但透過組合幾個函數,即可高效達成目標。以下提供兩種公式方法,適用於處理產品編號、檔案路徑等具有固定分隔符模式的資料。請注意,較複雜的公式可能增加大型資料集的計算負擔。
1. 在空白儲存格(例如 C2)中,輸入或複製下列任一公式:
=SEARCH("^^",SUBSTITUTE(A2,"-","^^",LEN(A2)-LEN(SUBSTITUTE(A2,"-","")))) =LOOKUP(2,1/(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)="-"),ROW(INDIRECT("1:"&LEN(A2)))) 這兩個公式皆用於傳回參照儲存格(A2)中字元「-」最後一次出現的位置(以數字表示)。第一個公式運用 SEARCH 與 SUBSTITUTE,透過將最後一個「-」替換為獨特符號後再進行搜尋,精準定位其位置。第二個公式則結合 LOOKUP、MID 與 ROW,直接找出最後一個「——」的位置。您可以根據自身熟悉度或資料量靈活選用任一方法。LOOKUP 方法更易調整,尤其適合支援陣列運算的新版 Excel,立即體驗高效運算!

2. 輸入公式後,按下 Enter。若要將此公式套用至其他列,請向下拖曳填滿控點,涵蓋整個所需範圍,即可立即為每個儲存格填入對應文字字串中最後一次出現的位置,如下圖所示。將公式複製到其他區域時,務必再次確認參照的儲存格是否正確。

注意:在這些範例中,A2 是指包含您資料的儲存格,而「-」為目標字元。您可以將「——」替換為任何需要搜尋的字元。若儲存格為空白,或文字中不含該字元,公式可能會傳回錯誤。針對含有重複分隔符或特殊符號的文字項目,請務必仔細檢查是否受到隱藏或不可見字元的影響。
使用自訂函數找出字元的最後一次出現位置
另一種更靈活的做法,是在 VBA 模組中使用自訂函數(UDF),不僅賦予您更高的控制力,也大幅提升重複使用的便利性——特別當您經常需要在各類分析中找出任一字元最後出現的位置時。此方法的優勢在於提供簡潔直覺的公式介面(=lastpositionofchar(cell, character)),其操作方式就如同 Excel 內建函數一般!但請注意:VBA 解決方案需啟用巨集,且務必將活頁簿另存為啟用巨集的格式(*.xlsm),才能完整保留您的 UDF。
1. 開啟您要新增此函數的工作表。
2. 同時按下 ALT + F11 鍵,即可開啟 Microsoft Visual Basic for Applications 編輯器。
3. 在 VBA 編輯器中,點選插入> 模組,即可建立新模組。接著將下列程式碼複製並貼上至模組視窗中。
VBA 程式碼:找出字元的最後一次出現位置
Function LastpositionOfChar(strVal As String, strChar As String) As Long
LastpositionOfChar = InStrRev(strVal, strChar)
End Function
疑難排解:若函數未傳回結果,請確認已啟用巨集,並確保公式中輸入了正確的儲存格參照與字元。若需尋找不同字元的最後出現位置,只需相應調整引數即可!
4. 保存並關閉程式碼視窗,返回工作表後,在空白儲存格(例如 B2)中輸入下列公式:=lastpositionofchar(A2,"-")。請依需求將 A2 替換為對應的儲存格,並將「——」替換為您要搜尋的目標字元。

5. 視需要向下拖曳填滿控點,將公式套用至其他儲存格,即可傳回每個文字字串中指定字元的最後位置,如下所示。

注意:第一個參數(A2)是包含文字字串的來源儲存格,第二個(「-」)是要搜尋的目標字元。您可依需求調整這些參數。若未找到相符項目,函數可能會傳回 0. 執行或編輯 VBA 程式碼前,務必先儲存您的工作!若出現錯誤訊息,請檢查引號是否誤用,或儲存格參照是否不正確。
使用公式找出字元的第一次或出現次數出現位置
若您的任務不只是找出最後一次出現的位置,而是要定位文字字串中某字元的第一次、第二次或特定出現次數的位置,可採用不同的公式結構。此類需求常見於解析階層式編碼、提取結構化 ID 的部分內容,或識別資料項目中的重複符號。
1. 若要取得指定字元第 n 次出現的位置,請在空白儲存格(例如 C2)中輸入或貼上下列公式:
=FIND(CHAR(160),SUBSTITUTE(A2,"-",CHAR(160),2)) 在此公式中,A2 為要搜尋的儲存格,「——」為目標字元,而 2 代表您要取得該字元第幾次出現的位置(例如:2 表示第二次出現)。您可依資料需求靈活調整出現次數!

2. 按下 Enter。若要將公式套用至更多列,請向下拖曳填滿控點至所需範圍,即可輕鬆取得例如每個文字字串中「——」的第二次出現位置。若指定的出現次數超過該字元在字串中的總出現次數,公式將傳回錯誤,此時請檢查您的文字資料或出現次數參數。

注意:公式中的數字 2 代表要搜尋的出現次數。調整此數字,即可輕鬆找出指定字元的第一次、第三次、第四次或任意第 N 次出現位置!若指定的出現次數超過字元實際出現次數,將顯示 #VALUE! 錯誤;建議搭配 IFERROR()函數,讓輸出結果更乾淨俐落。
透過簡易功能找出特定字元的第一次或出現次數出現位置
對於偏好直覺互動式操作,或不熟悉撰寫複雜公式與 VBA 程式碼的使用者,Kutools for Excel 提供了一項名為 查找字元在字串中第 N 次出現的位置的便捷工具。只需輕點幾下,即可快速取得儲存格中特定字元的第一次、第二次、第三次,甚至任意指定次數的出現位置,大幅加速重複性資料清理流程,尤其適合處理大型資料集!
安裝 Kutools for Excel 後,請依照下列步驟快速取得結果:
假設您希望取得一組文字字串中連字號「——」第二次出現的位置:
1. 點選您希望顯示結果的儲存格。
2. 點擊功能區中的 Kutools> 公式助手> 公式助手,如下圖所示:

3. 在公式助手對話方塊中:
- 選取查閱功能區中的公式類型下拉式清單。
- 從 查找字元在字串中第 N 次出現的位置功能區的選擇一個公式清單中選取。
- 在參數輸入區域中,選取包含文字的儲存格、輸入欲搜尋的字元,並指定出現次數。

4. 按一下確定。公式傳回結果後,您可向下拖曳填滿控點,依需求套用至其他列,有效降低手動輸入公式所帶來的錯誤風險!

此選項特別適合非技術使用者,以及需要在不同工作表中頻繁重複執行此流程的用戶,不僅能大幅減少手動錯誤,還能節省建構複雜公式的寶貴時間。
適用於新版 Excel 的替代公式(支援動態陣列)
在支援動態陣列的新版 Excel(Excel 365、Excel 2021 及更高版本)中,您可善用 SEQUENCE 與 FILTER 等函數,一次取得某字元的所有出現位置,輕鬆掌握其出現次數,甚至將所有位置直接列出至另一個範圍,方便後續處理!
1. 在空白儲存格(例如 B2)中輸入下列公式,即可取得儲存格 A2 中所有「——」字元的出現位置:
=FILTER(SEQUENCE(LEN(A2)), MID(A2,SEQUENCE(LEN(A2)),1)="-") 按下 Enter 後,公式會自動將「——」每次出現的位置溢出至相鄰儲存格。若您只想取得出現次數,可使用下列公式:
=INDEX(FILTER(SEQUENCE(LEN(A2)), MID(A2,SEQUENCE(LEN(A2)),1)="-"),2) 將 2 替換為所需的出現次數。此方法特別適用於長度可變的陣列或清單,但需使用支援這些函數的 Excel 版本。
提示:若出現 #CALC! 或類似錯誤,請先確認您的 Excel 版本是否支援動態陣列,並確保所參照的儲存格包含文字資料。
VBA 程式碼:找出字元的出現次數出現位置
若您需要找出字元在最後一次出現以外的任意指定次數之位置,VBA 也能提供協助。以下巨集可依多種解析需求靈活自訂,尤其在需於多個活頁簿中反覆使用時,更能大幅節省寶貴時間。
1. 前往開發人員索引標籤 > Visual Basic,然後選取插入 > 模組,並將下方程式碼貼上至模組視窗:
Function NthPositionOfChar(cell As Range, ch As String, nth As Integer) As Long
Dim s As String
Dim i As Long, count As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
s = cell.Value
count = 0
For i = 1 To Len(s)
If Mid(s, i, 1) = ch Then
count = count + 1
If count = nth Then
NthPositionOfChar = i
Exit Function
End If
End If
Next i
NthPositionOfChar = 0
End Function 2. 關閉編輯器。在工作表中輸入公式 =NthPositionOfChar(A2,"-",2)(依需求替換參數),即可取得儲存格 A2 中「-」字元第二次出現的位置。若指定的出現次數不存在,此函數將傳回 0.
這段程式碼非常適合用來從資料中靈活擷取以分隔符區隔的資訊,或簡化重複性的解析作業。您還可進一步調整 VBA 自訂函數,以滿足更專業的需求,例如支援區分大小寫的字元搜尋,或高效處理大型資料集。
處理文字字串與字元位置時,務必檢查是否含有隱藏或不可見字元(例如空格、換行符或特殊 Unicode 字元),因為這些都可能影響公式運算結果。此外,若您的資料使用多種分隔符,請先統一格式後再套用公式或巨集。若遇到錯誤,請再次確認參數設定、公式參照範圍,以及資料類型(文字/數值)是否與所用函數相容。
結合運用公式、VBA 與 Kutools 功能,可為日常及進階的 Excel 文字處理任務提供全方位的彈性。請根據您的技術熟練度、Excel 版本以及資料複雜度,選擇最適合的方法,以實現最佳的準確性與效率。
更多相關文章:
- 在 Excel 中提取除第一個/最後一個單字外的所有文字
- 從儲存格中提取除第一個或最後一個單字以外的所有文字,有助於移除您不需要的字詞。在此情況下,您當然可以逐一手動複製所需文字並貼到另一個儲存格中。但若有多個儲存格內容都需要排除第一個或最後一個單字,這種方式將會相當乏味。您該如何在 Excel 中快速且輕鬆地提取除第一個或最後一個以外的所有文字呢?
- 從儲存格中由右至左提取字元
- 本文將說明如何在 Excel 工作表中,從儲存格右側開始提取字元,直到遇見空格為止,以取得以下結果。文中提供的實用公式能讓您快速又輕鬆地完成這項任務。
- 移除前 X 個、後 X 個字元或特定位置的字元
- 本文將說明如何從儲存格右側開始提取字元,直到遇到空格為止,協助您在 Excel 工作表中快速取得以下結果。文中提供的實用公式,讓您輕鬆完成此任務。
- 找出第一個小寫字母的位置
- 如果您有一份同時包含大小寫字母的文字字串清單,想快速找出每個字串中第一個小寫字母在 Excel 工作表中的位置,該如何操作才能避免逐一計算呢?
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 LOOKUP:多重條件 VLookup | 多重數值 VLookup | 跨多個工作表 VLookup | 模糊查找…… | |
| 高級下拉列表:快速建立下拉式清單 | 相依式下拉式清單 | 多選下拉式清單…… | |
| 欄位管理員:新增指定數量的欄位|移動欄位|切換隱藏欄位的可見狀態|比較範圍與欄位…… | |
| 精選功能:網格聚焦 | 設計視圖 |增強編輯欄 | 工作簿與工作表管理員 | 資源庫(自動文字)| 日期提取 | 合併工作表 | 加密/解密儲存格 | 依清單傳送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體儲存格/斜體/刪除線……) ...... | |
| 頂尖 15 工具組:12 文字工具(添加文本,刪除特定字符,……)| 50+ 圖表 類型(甘特圖,……)| 40+ 實用公式(基於生日計算年齡,……)| 19 插入工具(插入二維碼,從路徑插入圖片,……)| 12 轉換工具(金額轉大寫,匯率轉換,……)| 7 合併和拆分工具(高級合併行,分割儲存格,……)|……以及更多 |
運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……
Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!
- 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
- 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
- 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!
所有 Kutools 增益集,一個安裝程式
Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!
- 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
- 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
- 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
- 30 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用