Hàm FIND trong Excel xác định vị trí chính xác của chuỗi ký tự trong văn bản. Cú pháp: =FIND(findtext, withintext, [startnum]) với findtext là văn bản cần tìm, withintext là văn bản chứa đựng, startnum là vị trí bắt đầu tìm. Hàm phân biệt chữ hoa/thường, trả về số thứ tự ký tự đầu tiên của chuỗi tìm thấy. Nếu không tìm thấy sẽ báo lỗi #VALUE!. Ví dụ: =FIND("Excel", "Học Excel Online") trả về 5, cho biết “Excel” bắt đầu ở vị trí thứ 5.
Hàm FIND trong Excel phân biệt chữ hoa chữ thường một cách nghiêm ngặt – điều này từng khiến tôi bối rối khi tìm “excel” nhưng lại gặp lỗi #VALUE! chỉ vì trong chuỗi gốc là “Excel”. Sau vài lần debug công thức, tôi mới hiểu được tính chất đặc biệt này và cách tận dụng nó hiệu quả.
Khác với hàm SEARCH có thể “tha thứ” cho việc viết hoa viết thường, FIND yêu cầu độ chính xác tuyệt đối. Điều này nghe có vẻ khó chịu, nhưng thực ra lại là lợi thế lớn khi bạn cần tìm kiếm chính xác. Ví dụ, khi tôi cần phân biệt mã sản phẩm “ABC123” với “abc123” trong danh sách hàng nghìn dòng dữ liệu.
Cú pháp và thành phần của hàm FIND
Cú pháp cơ bản của hàm FIND khá đơn giản:
=FIND(findtext, withintext, [start_num])
find_text là chuỗi ký tự bạn muốn tìm kiếm. Có thể là một ký tự đơn lẻ như “a”, một từ như “Excel”, hoặc cả một cụm từ. Lưu ý quan trọng: hàm này phân biệt chữ hoa chữ thường, nên “A” và “a” được coi là hai ký tự hoàn toàn khác nhau.
within_text là chuỗi văn bản chứa đựng nội dung bạn muốn tìm kiếm. Đây có thể là nội dung trực tiếp trong công thức hoặc tham chiếu đến một ô khác.
start_num là tham số tùy chọn cho biết vị trí bắt đầu tìm kiếm. Nếu bỏ qua, hàm sẽ tìm từ ký tự đầu tiên. Tôi thường sử dụng tham số này khi cần tìm lần xuất hiện thứ hai, thứ ba của một từ khóa.
Cách thức hoạt động thực tế của hàm FIND
Khi Excel thực thi hàm FIND, nó sẽ quét từng ký tự trong chuỗi withintext từ trái sang phải, bắt đầu từ vị trí startnum (hoặc vị trí 1 nếu không chỉ định). Ngay khi tìm thấy ký tự đầu tiên khớp với find_text, hàm trả về số thứ tự của vị trí đó.
Điều đặc biệt là hàm FIND trả về vị trí của ký tự đầu tiên trong chuỗi tìm kiếm, không phải vị trí cuối. Ví dụ, =FIND("Excel", "Học Excel Online") trả về 5, vì chữ “E” trong “Excel” nằm ở vị trí thứ 5.
Nếu không tìm thấy chuỗi cần tìm, hàm sẽ trả về lỗi #VALUE!. Đây là điểm khác biệt quan trọng so với một số hàm khác trả về 0 khi không tìm thấy.
Ví dụ thực tế với hàm FIND
Để hiểu rõ hơn, tôi sẽ đưa ra một số ví dụ cụ thể:
Ví dụ 1: =FIND("H", "Học Excel Online")
Kết quả: 1 (vì “H” nằm ở vị trí đầu tiên)
Ví dụ 2: =FIND("h", "Học Excel Online")
Kết quả: #VALUE! (vì không có chữ “h” thường trong chuỗi)
Ví dụ 3: =FIND("Excel", "Học Excel Online")
Kết quả: 5 (vì “Excel” bắt đầu từ vị trí thứ 5)
Ví dụ 4: =FIND("e", "Học Excel Online", 6)
Kết quả: 8 (tìm chữ “e” bắt đầu từ vị trí 6, tìm thấy ở vị trí 8 trong “Excel”)
Tận dụng tham số start_num để tìm kiếm nâng cao
Tham số start_num là công cụ mạnh mẽ mà tôi thường sử dụng trong các tình huống phức tạp. Ví dụ, khi cần tìm lần xuất hiện thứ hai của một từ khóa trong chuỗi văn bản.
Giả sử tôi có chuỗi “Excel là công cụ tuyệt vời. Excel giúp xử lý dữ liệu hiệu quả.” Để tìm vị trí của từ “Excel” thứ hai:
- Đầu tiên:
=FIND("Excel", A1)→ trả về 1 - Sau đó:
=FIND("Excel", A1, 2)→ trả về 28
Trick này đặc biệt hữu ích khi tôi cần tách chuỗi hoặc trích xuất thông tin từ các định dạng dữ liệu có cấu trúc lặp lại.
Kết hợp FIND với các hàm khác để xử lý chuỗi
Sức mạnh thực sự của hàm FIND được thể hiện khi kết hợp với các hàm xử lý chuỗi khác như LEFT, RIGHT, MID, và LEN.
Trích xuất họ từ họ tên đầy đủ:
Giả sử có họ tên “Nguyễn Văn An” trong ô A1, tôi sử dụng:
=LEFT(A1, FIND(” “, A1) – 1)
Công thức này tìm vị trí dấu cách đầu tiên, sau đó lấy tất cả ký tự bên trái vị trí đó.
Tách tên miền từ email:
Với email “[email protected]” trong ô B1:
=RIGHT(B1, LEN(B1) – FIND(“@”, B1))
Trích xuất phần mở rộng file:
Từ tên file “document.xlsx”:
=RIGHT(A1, LEN(A1) – FIND(“.”, A1))
Xử lý lỗi #VALUE! một cách thông minh
Vì hàm FIND trả về lỗi #VALUE! khi không tìm thấy, tôi thường kết hợp với hàm IFERROR để xử lý tình huống này:
=IFERROR(FIND(“keyword”, A1), “Không tìm thấy”)
Hoặc sử dụng ISERROR để kiểm tra trước:
=IF(ISERROR(FIND(“keyword”, A1)), “Không có”, “Có”)
Cách tiếp cận này giúp công thức không bị gián đoạn và hiển thị thông báo có ý nghĩa thay vì lỗi khó hiểu.
So sánh FIND với SEARCH – khi nào dùng cái nào?
Nhiều người thường nhầm lẫn giữa FIND và SEARCH. Điểm khác biệt chính:
FIND:
- Phân biệt chữ hoa chữ thường
- Không hỗ trợ ký tự đại diện (wildcard)
- Chính xác tuyệt đối
SEARCH:
- Không phân biệt chữ hoa chữ thường
- Hỗ trợ ký tự đại diện như * và ?
- Linh hoạt hơn
Tôi sử dụng FIND khi cần độ chính xác cao, đặc biệt với mã sản phẩm, ID, hoặc khi phân biệt chữ hoa chữ thường quan trọng. SEARCH phù hợp hơn cho tìm kiếm văn bản thông thường.
Ứng dụng thực tế trong công việc
Trong quá trình làm việc với dữ liệu, tôi thường áp dụng hàm FIND cho các tình huống sau:
Kiểm tra định dạng mã sản phẩm: Đảm bảo mã có đúng cấu trúc như “ABC-123” bằng cách tìm vị trí dấu gạch ngang.
Tách thông tin từ chuỗi có cấu trúc: Ví dụ từ “Sản phẩm: ABC | Giá: 100000” tách ra từng thành phần.
Validate dữ liệu nhập: Kiểm tra email có chứa ký tự @ ở vị trí hợp lệ hay không.
Xử lý import dữ liệu: Khi nhận file từ hệ thống khác với format không chuẩn, FIND giúp tôi tìm và tách các thành phần cần thiết.
Sau nhiều năm sử dụng Excel, tôi nhận ra hàm FIND tuy đơn giản nhưng là nền tảng cho rất nhiều công thức xử lý chuỗi phức tạp. Việc hiểu rõ tính chất phân biệt chữ hoa chữ thường và cách xử lý lỗi đã giúp tôi tiết kiệm hàng giờ debug và tạo ra những giải pháp dữ liệu đáng tin cậy hơn.







