Menu

Đếm giá trị duy nhất trong Excel: công thức UNIQUE, COUNTIF

=COUNTA(UNIQUE(A2:A9)) đếm có bao nhiêu giá trị khác nhau trong A2:A9. Với Excel đời cũ, dùng =SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9)). Đếm giá trị chỉ xuất hiện một lần, đếm theo điều kiện và bỏ qua ô trố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.

=COUNTA(UNIQUE(A2:A9)) đếm có bao nhiêu giá trị khác nhau trong A2:A9. UNIQUE trả về mỗi giá trị một lần, và COUNTA đếm danh sách đó. Công thức cần Excel 2021 hoặc Microsoft 365; cách làm cho các phiên bản cũ hơn có ở bên dưới.

Các khách hàng khác nhau
D2
ABCD
1CustomerUnique listCount
2AnaAna5
3BenBen
4AnaCara
5CaraDan
6BenEva
7Dan
8Ana
9Eva
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.

Tám đơn hàng đến từ năm khách hàng. C2 trả ra (spill) danh sách tên từ UNIQUE để bạn thấy những gì đang được đếm, còn D2 đếm danh sách đó mà không cần nó nằm trên trang tính. Đổi A9 thành Ana thì kết quả giảm còn 4; nhập một tên mới thì kết quả tăng lên.

UNIQUE không phân biệt chữ hoa chữ thường, nên Ana và ana được tính là một khách hàng.

Đếm giá trị duy nhất trong Excel đời cũ

Excel 2019 trở về trước không có UNIQUE. Công thức kinh điển là:

=SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9))

Khi COUNTIF nhận cả vùng làm điều kiện, nó trả về, cho từng hàng, số lần giá trị của hàng đó xuất hiện. Một tên xuất hiện 3 lần sẽ nhận 3 ở mỗi hàng của nó, nên 1/3 được cộng ba lần và tên đó cộng lại vừa đúng 1. Cột B hiện số lần cho từng hàng và cột C hiện phân số.

Cách 1/COUNTIF hoạt động
E2
ABCDE
1CustomerTimes1/TimesCount
2Ana30.335
3Ben20.505.00
4Ana30.33
5Cara11.00
6Ben20.50
7Dan11.00
8Ana30.33
9Eva11.00
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.

Ba hàng của Ana mỗi hàng cộng 0,33, hai hàng của Ben mỗi hàng cộng 0,50, và ba tên chỉ có một lần mỗi tên cộng 1: tổng là 5, bằng với SUM của cột phụ. Với hàng chục nghìn hàng, công thức này chạy chậm vì COUNTIF quét cả vùng một lần cho mỗi hàng; UNIQUE không tốn chi phí đó.

Giá trị khác nhau và giá trị duy nhất: giá trị chỉ xuất hiện một lần

Từ "duy nhất" được dùng cho hai cách đếm khác nhau. Cách ở trên đếm các giá trị khác nhau: mỗi tên một lần. Cách còn lại đếm các giá trị xuất hiện đúng một lần, ví dụ những khách hàng chỉ đặt hàng một lần. UNIQUE làm được việc này khi tham số thứ ba, exactly_once, được đặt thành TRUE.

Khác nhau và đúng một lần
D3
ABCD
1CustomerCountResult
2AnaDistinct5
3BenExactly once3
4AnaExactly once, older Excel3
5Cara
6Ben
7Dan
8Ana
9Eva
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ó năm khách hàng khác nhau, nhưng chỉ ba người trong số đó, Cara, Dan và Eva, đặt hàng một lần. Phiên bản cho Excel đời cũ đếm các hàng có COUNTIF đúng bằng 1. Nếu mọi giá trị đều lặp lại, UNIQUE với exactly_once trả về #CALC! và COUNTA tính lỗi đó là 1; phiên bản SUMPRODUCT cho kết quả 0.

Đếm giá trị duy nhất theo điều kiện

Để đếm số khách hàng khác nhau trong một khu vực, hãy lọc các hàng trước rồi đếm phần còn lại. FILTER giữ lại các hàng North và UNIQUE loại bỏ các giá trị lặp.

Số khách hàng khác nhau theo khu vực
E2
ABCDE
1CustomerRegionRegionCustomers
2AnaNorthNorth3
3BenSouthSouth3
4AnaNorthNorth, older Excel3
5CaraNorth
6BenNorth
7DanSouth
8AnaNorth
9EvaSouth
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ó năm đơn hàng từ ba khách hàng: Ana, Cara và Ben. E3 đếm South theo cùng cách. E4 là phiên bản cho Excel 2019 trở về trước: COUNTIFS đếm từng cặp khách hàng và khu vực, còn điều kiện chỉ giữ lại các phân số của North.

Nếu không có hàng nào khớp, FILTER trả về #CALC!, và COUNTA tính lỗi đó là một giá trị: nhập West vào D2 thì E2 hiện 1 chứ không phải 0. Bọc công thức trong IFERROR cũng không giúp được gì, vì COUNTA không trả về lỗi. Thay vào đó, hãy đếm số hàng của kết quả, vì cách này có truyền lỗi ra ngoài: =IFERROR(ROWS(UNIQUE(FILTER(A2:A9,B2:B9="West"))),0) trả về 0.

Đếm giá trị duy nhất và bỏ qua ô trống

Một ô trống trong vùng sẽ thành thêm một "giá trị". UNIQUE trả nó về dưới dạng số 0 và COUNTA đếm số 0 đó, nên với Ana, một ô trống, Ben, Ana, một ô trống, Cara và Ben, Excel cho:

=COUNTA(UNIQUE(A2:A8))    4   three names plus the 0 for the empty cells

Trong công thức đời cũ, một hàng trống khiến COUNTIF trả về 0, nên 1/0 cho lỗi #DIV/0!. Hãy loại ô trống trước:

Một vùng có ô trống
D2
ABCD
1CustomerFormulaCount
2AnaSkip blanks3
3Older Excel3
4Ben
5Ana
6
7Cara
8Ben
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 đếm được ba khách hàng. FILTER với A2:A8<>"" loại các ô trống trước khi UNIQUE nhìn thấy chúng. Trong công thức đời cũ, A2:A8&"" biến mỗi ô trống thành một chuỗi rỗng để COUNTIF không bao giờ trả về 0, còn (A2:A8<>"") gán trọng số 0 cho những hàng đó.

Luyện tập: đếm số sản phẩm

Đến lượt bạn: có bao nhiêu sản phẩm?
E2
ABCDE
1OrderProductCountResult
21001AppleProducts
31002Pear
41003Apple
51004Plum
61005Pear
71006Apple
81007Plum
91008Fig
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: Đếm xem có bao nhiêu sản phẩm khác nhau trong B2:B9. Viết công thức vào E2.

Dùng công thức nào cho phiên bản Excel của bạn

ĐếmExcel 365 / 2021Excel 2019 trở về trước
Giá trị khác nhau=COUNTA(UNIQUE(A2:A9))=SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9))
Giá trị xuất hiện một lần=COUNTA(UNIQUE(A2:A9,,TRUE))=SUMPRODUCT(--(COUNTIF(A2:A9,A2:A9)=1))
Giá trị khác nhau, có điều kiện=COUNTA(UNIQUE(FILTER(A2:A9,B2:B9="North")))=SUMPRODUCT((B2:B9="North")/COUNTIFS(A2:A9,A2:A9,B2:B9,B2:B9))
Giá trị khác nhau, bỏ qua ô trống=COUNTA(UNIQUE(FILTER(A2:A9,A2:A9<>"")))=SUMPRODUCT((A2:A9<>"")/COUNTIF(A2:A9,A2:A9&""))

Trong Pivot Table, kiểu tổng hợp Distinct Count làm được việc tương tự mà không cần công thức, nhưng chỉ khi Pivot Table được tạo với tùy chọn "Add this data to the Data Model" được đánh dấu. Để xóa các giá trị lặp thay vì đếm chúng, xem xóa dữ liệu trùng lặp.

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

Làm sao đếm giá trị duy nhất trong Excel?

Trong Excel 365 hoặc 2021, dùng =COUNTA(UNIQUE(A2:A9)): UNIQUE liệt kê mỗi giá trị một lần và COUNTA đếm danh sách đó. Với các phiên bản cũ hơn, dùng =SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9)).

Làm sao đếm các giá trị chỉ xuất hiện một lần?

Đặt tham số thứ ba của UNIQUE, exactly_once, thành TRUE: =COUNTA(UNIQUE(A2:A9,,TRUE)). Với Ana, Ana, Ben, kết quả là 1 vì chỉ Ben xuất hiện một lần. Trong Excel 2019 trở về trước, dùng =SUMPRODUCT(--(COUNTIF(A2:A9,A2:A9)=1)).

Làm sao đếm giá trị duy nhất theo điều kiện?

Lọc trước rồi đếm: =COUNTA(UNIQUE(FILTER(A2:A9,B2:B9="North"))) đếm số khách hàng khác nhau trong các hàng North. Nếu không có hàng nào khớp, COUNTA tính lỗi #CALC! của FILTER là 1, nên khi có thể xảy ra trường hợp đó, hãy dùng =IFERROR(ROWS(UNIQUE(FILTER(A2:A9,B2:B9="North"))),0).

Làm sao đếm giá trị duy nhất và bỏ qua ô trống?

Loại ô trống trước khi dùng UNIQUE: =COUNTA(UNIQUE(FILTER(A2:A9,A2:A9<>""))). Trong Excel đời cũ, =SUMPRODUCT((A2:A9<>"")/COUNTIF(A2:A9,A2:A9&"")) sẽ bỏ qua chúng.

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