Barry thường thấy mình muốn xác định lần xuất hiện thứ N của một ký tự trong một chuỗi văn bản. Anh ấy biết mình có thể sử dụng các hàm trang tính SEARCH và FIND để tìm lần xuất hiện đầu tiên, nhưng không chắc chắn về cách tìm, chẳng hạn như lần xuất hiện thứ 3 của chữ “B” trong chuỗi văn bản.

Trên thực tế, hàm SEARCH có thể được sử dụng để tìm sự xuất hiện mong muốn, theo cách sau:

=SEARCHB("b",G20,(SEARCHB("b",G20,(SEARCHB("b",G20,1)+1))+1))

Lưu ý cách hàm SEARCHB được sử dụng theo cách lồng nhau. Công thức chỉ định những gì đang được tìm kiếm (chữ cái “b”) và số lượng cấp độ lồng nhau cho biết sự xuất hiện nào trong ô bạn muốn tìm. Công thức trả về vị trí của ký tự mong muốn trong ô.

Tất nhiên, vấn đề với một công thức như vậy là nó khó duy trì và có thể nhanh chóng không sử dụng được nếu bạn muốn tìm, chẳng hạn như lần xuất hiện thứ bảy.

Một công thức linh hoạt hơn sẽ như sau:

=FIND(CHAR(1),SUBSTITUTE(A1,"B",CHAR(1),3))

Công thức này kiểm tra giá trị trong A1. Nó thay thế mã CHAR (1) cho lần xuất hiện thứ ba của “B” trong ô. Sau đó, hàm FIND tìm kiếm trong chuỗi kết quả cho vị trí mà CHAR (1) xảy ra.

Nếu sự xuất hiện mong muốn không tồn tại, thì công thức trả về lỗi #VALUE.

Nếu muốn, bạn có thể tạo một hàm do người dùng xác định sẽ tìm kiếm vị trí thứ N của một ký tự. Sau đây là một macro rất đơn giản có ba đối số: chuỗi được tìm kiếm, văn bản cần khớp và vị trí mong muố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

Hàm phân biệt chữ hoa chữ thường trong những gì nó tìm kiếm và nó trả về vị trí trong chuỗi được chỉ định mà tại đó giá trị sFindWhat xuất hiện. Nếu không có sự xuất hiện nào tại phiên bản được chỉ định, thì hàm trả về giá trị 0. Sau đây là cách hàm có thể được sử dụng trong một trang tính:

=FindN("b",C15,3)

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3324) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: