Menu

Ký tự đại diện trong Excel: *, ? và ~ trong COUNTIF, VLOOKUP

Trong điều kiện của Excel, * thay cho số ký tự bất kỳ và ? thay cho đúng một ký tự: =COUNTIF(A2:A7,"*apple*") đếm các ô có chứa apple. ~ biến một ký tự đại diện trở lại thành ký tự thường.

Mọi bảng tính trên trang này đều trực tiếp: đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Excel có ba ký tự đại diện (wildcard) dùng trong điều kiện và tra cứu: * khớp với số ký tự bất kỳ (kể cả không có ký tự nào), ? khớp với đúng một ký tự, và ~ biến * hoặc ? đứng sau nó trở lại thành ký tự thường. =COUNTIF(A2:A7,"*apple*") đếm các ô có chứa apple ở bất kỳ vị trí nào.

Đếm bằng ký tự đại diện
D2
ABCD
1ProductPatternCount
2Apple juice*apple*4
3Green appleapple*2
4Pineapple*juice2
5Orange juice?????0
6Pear*e4
7Apples
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.
  • *apple* là chứa apple: 4 kết quả, vì Pineapple cũng được tính.
  • apple* là bắt đầu bằng apple: chỉ có Apple juice và Apples. COUNTIF bỏ qua chữ hoa chữ thường.
  • *juice là kết thúc bằng juice.
  • ????? là dài đúng năm ký tự. Không sản phẩm nào ở đây có năm ký tự, nên kết quả là 0; gõ Peach vào A6 thì đếm được 1.
  • *e là kết thúc bằng e.

Gõ mẫu của riêng bạn vào cột C, như *an* hoặc P*, và kết quả đếm sẽ cập nhật.

Khớp một phần trong VLOOKUP và XLOOKUP

VLOOKUP chấp nhận ký tự đại diện ở chế độ so khớp chính xác (FALSE ở đối số cuối). Hãy nối ký tự đại diện vào giá trị ngay trong công thức, để D2 chỉ cần chứa vài chữ cái đầu:

Tra cứu theo vài chữ cái đầu
E2
ABCDE
1ProductPriceStarts withPrice
2Apple juice3.5Pin4
3Green apple1.24
4Pineapple4
5Orange juice3.2
6Pear0.9
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Cả hai công thức đều tìm thấy Pineapple. Đổi D2 thành juice: mẫu juice* của VLOOKUP cần văn bản bắt đầu bằng juice nên trả về #N/A, còn mẫu *juice* của XLOOKUP tìm sản phẩm đầu tiên có chứa nó, là Apple juice. Như mọi phép so khớp chính xác, tra cứu bằng ký tự đại diện trả về hàng đầu tiên phù hợp, nên hãy viết mẫu đủ cụ thể.

XLOOKUP chỉ coi * và ? là ký tự đại diện khi đối số thứ năm, match_mode, bằng 2. Nếu không, hàm tìm đúng dấu sao theo nghĩa đen. MATCH chấp nhận ký tự đại diện với match_type bằng 0, còn XMATCH với match_mode bằng 2, giống XLOOKUP. Xem VLOOKUP để biết các đối số còn lại.

Đếm các sản phẩm phone
D2
ABCD
1ProductPhone products
2Smartphone
3Headphones
4Phone stand
5Laptop bag
6Charger
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong D2, đếm các sản phẩm có tên chứa phone ở bất kỳ vị trí nào.

Tính tổng và trung bình với ký tự đại diện

Mọi hàm nhận điều kiện đều đọc điều kiện theo cùng một cách, nên các mẫu này cũng dùng được trong SUMIF, SUMIFS, AVERAGEIF, AVERAGEIFS, MAXIFS và MINIFS:

Tổng theo một phần tên
E2
ABCDE
1RegionSalesPatternTotal
2North-East120North*285
3North-West95*West155
4South80?????150
5South-West60
6East110
7North70
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

North* cộng mọi khu vực bắt đầu bằng North, kể cả chính North, vì * cũng khớp với chuỗi rỗng. ????? cộng các khu vực có đúng năm ký tự: South và North.

Doanh số của mọi khu vực West
E2
ABCDE
1RegionSalesWest total
2North-East120
3North-West95
4South80
5South-West60
6East110
7North70
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong E2, tính tổng doanh số của mọi khu vực có tên kết thúc bằng West.

Tìm dấu sao hoặc dấu hỏi thật bằng ~

Để đếm văn bản có chứa một dấu * hoặc ? thật, hãy đặt dấu ngã phía trước nó. Bản thân dấu ngã được viết là ~~.

Thoát một ký tự đại diện
C2
ABC
1NoteCount
2Rated 5*1
3Why?1
4Done4
55 stars
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

C2 đếm các ô chứa một dấu sao thật (chỉ có A2), C3 đếm các ô chứa dấu hỏi. C4 cho thấy mặt còn lại: chỉ riêng "*" khớp với mọi văn bản, nên nó đếm mọi ô văn bản, ở đây là 4. Mẫu này bỏ qua số và ô trống, vì vậy COUNTIF(range,"*") là cách thường dùng để đếm ô văn bản.

Những hàm nào chấp nhận ký tự đại diện

Chấp nhận *, ?, ~Không chấp nhận
COUNTIF, COUNTIFS, SUMIF, SUMIFS, AVERAGEIF, AVERAGEIFS, MAXIFS, MINIFS=, <> và các phép so sánh khác
VLOOKUP và HLOOKUP với FALSEIF khi dùng riêng
MATCH với 0FIND
XLOOKUP và XMATCH với match_mode 2FILTER, UNIQUE, SORT
SEARCHSUBSTITUTE, TEXTBEFORE, TEXTAFTER
Find and Replace (Ctrl+H), ô lọc dữ liệu

SEARCH nhận ký tự đại diện ngay trong công thức: =SEARCH("b?d","a bad day") trả về 3 trong Excel (FIND và SEARCH có chi tiết). Với FILTER, hãy dùng ISNUMBER(SEARCH(...)) làm điều kiện thay vì một mẫu.

Lỗi thường gặp: ký tự đại diện sau dấu =

Toán tử = không bao giờ đọc ký tự đại diện: =A2="*apple*" hỏi xem A2 có chứa đúng bảy ký tự *apple* hay không. Trong Excel, với Green apple trong A2:

=A2="*apple*"                    FALSE
=IF(A2="*apple*","yes","no")     no

Thay vào đó, hãy đặt phép kiểm tra trong COUNTIF, hàm này trả về 1 hoặc 0 cho một ô đơn, hoặc dùng SEARCH:

Kiểm tra một ô bằng ký tự đại diện
B2
ABC
1ProductCOUNTIF testSEARCH test
2Green applecontains applecontains apple
3Pearnono
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

IF coi số 1 từ COUNTIF là TRUE và số 0 là FALSE. Phiên bản dùng SEARCH không cần ký tự đại diện nào, vì SEARCH vốn đã tìm văn bản ở bất kỳ vị trí nào trong ô.

Câu hỏi thường gặp

Các ký tự đại diện trong Excel là gì?

* khớp với số ký tự bất kỳ, kể cả không có ký tự nào; ? khớp với đúng một ký tự; ~ đặt trước *, ? hoặc ~ biến nó thành ký tự thường. "*apple*" nghĩa là chứa apple, "A*" là bắt đầu bằng A, "???" là đúng ba ký tự.

Làm sao dùng ký tự đại diện trong VLOOKUP?

Nối ký tự đại diện vào giá trị cần tìm và dùng so khớp chính xác: =VLOOKUP(E2&"*",A2:B6,2,FALSE) tìm mục đầu tiên bắt đầu bằng E2. Trong XLOOKUP, đặt match_mode là 2: =XLOOKUP("*"&E2&"*",A2:A6,B2:B6,"none",2).

Vì sao ký tự đại diện không chạy trong công thức IF?

Phép so sánh = không hiểu ký tự đại diện, nên =IF(A2="*apple*",...) chỉ khớp với đúng văn bản *apple*. Hãy dùng =IF(COUNTIF(A2,"*apple*"),"Yes","No") hoặc =IF(ISNUMBER(SEARCH("apple",A2)),"Yes","No").

Làm sao đếm các ô có chứa dấu sao?

Đặt dấu ngã trước nó: =COUNTIF(A2:A10,"*~**"). Dấu * đầu và cuối là ký tự đại diện, còn ~* là một dấu sao thật.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu