Làm thế nào để đếm số lượng giá trị khác biệt trong một phạm vi?


32

Tôi đã có một bảng lớn đã được tổ chức bằng các bộ lọc, v.v. Tôi muốn thêm một bản tóm tắt bên dưới các cột nhất định có chứa số lượng giá trị riêng biệt trong cột đó.

Không có chức năng nào =COUNTDISTINCT(A2:A100)vậy tôi có thể làm gì thay thế? (Excel 2003)

Tôi không thể sử dụng chính xác câu trả lời cho câu hỏi tương tự này vì tôi không muốn sửa đổi bảng hoặc bộ lọc. Tôi cần một bổ sung trong bảng tính, không phải là một sửa đổi .

Câu trả lời:


31
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

sẽ làm điều đó mà không phải sử dụng một công thức mảng.


4
Làm thế nào / tại sao điều này làm việc ???
RBarryYoung

4
@RBarryYoung, SUMPRODVEL hoạt động giống như một hàm Array mà không phải là một hàm. Mặc dù nó có thể làm được nhiều hơn những gì nó đang được sử dụng ở đây, nhưng ở đây, nó chỉ kiểm tra mọi phiên bản của một cột và đưa ra một giá trị tỷ lệ cho mỗi giá trị riêng biệt dựa trên số lần lặp trong cột. Vì vậy, nếu có hai trường hợp 'a', nó sẽ thêm 1/2 và 1/2 để nhận 1. Vì vậy, với mỗi giá trị riêng biệt, bạn sẽ thêm một vào tổng.
Lance Roberts

1
Đây là phần mà tôi gặp rắc rối với: " đưa ra một giá trị tỷ lệ cho mỗi giá trị riêng biệt dựa trên số lần lặp có trong cột. " Nếu tôi hiểu điều này, thì SUMPRODVEL đang thực hiện một cách hiệu quả một vòng lặp như thế for each [i] in A2:A100 DO:{ sum += (([i]<>"")/COUNTIF(A2:A100,[i])) }, phải ? Tôi có một chút khó khăn để hiểu làm thế nào nó biết để liệt kê cả tham số COUNTIF có điều kiện và thứ 2, nhưng không phải là tham số COUNTIF thứ 1? Đây có phải là phép thuật DWIM được ghi lại / giải thích ở bất cứ đâu bởi MS không? Sẽ thật tốt khi biết cách viết những điều này một cách có chủ ý.
RBarryYoung

1
Vâng, bạn đã có nó, nó lặp lại một mảng cho giá trị thường là một giá trị, nhân tất cả các tham số của nó (trong trường hợp này chỉ là 1), sau đó thêm các lần lặp. TÓM TẮT có thể rất phức tạp, nhưng chúng là một trong những hàm hữu ích nhất trong Excel, nó có thể làm nên những điều kỳ diệu theo nghĩa đen.
Lance Roberts

4
Điều này không thành công nếu đầu vào chứa các mục trống. Dễ dàng sửa chữa như demo trên youtube là đây : =SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&"")). Nó đảm bảo rằng COUNTIFkhông bao giờ trả về 0 cho các dòng trống, điều này sẽ dẫn đến DIV/0lỗi.
cfi

7

Tôi tìm thấy một giải pháp ở đây dường như là một cách làm tròn đáng kinh ngạc để giải quyết nó. Nhưng này, nó hoạt động ...

= SUM (NẾU (COUNTIF (A2: A100, A2: A100) = 0, "", 1 / COUNTIF (A2: A100, A2: A100)))

và sau đó nhấn Ctrl+Shift + Enter. Chỉ nhấn Entersẽ cho kết quả sai.


Tôi muốn thấy câu trả lời khác! Có cách nào tốt hơn cái này để giải quyết nó không?
Torben Gundtofte-Bruun

1
Không, đó là cách tốt nhất. Tôi không chắc tại sao lại có IF ở đó. Bạn chỉ có thể sử dụng mảng = SUM (1 / COUNTIF (A2: A100, A2: A100))
dkusleika

2
@dkusleika IF dường như ở đó để ngăn chặn sự phân chia bởi lỗi không. Như đã đề cập trên trang được liên kết ở trên, điều này là cần thiết nếu phạm vi chứa các ô trống, nếu không bạn có thể bỏ IF ra.
Bavi_H


1

Bài viết này cho thấy điều này cho các giá trị văn bản:

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

và điều này cho các giá trị số:

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

Bài viết này cho thấy các công thức tương tự, nhưng cũng cho thấy một phương pháp sử dụng các bộ lọc.

Đếm số lượng giá trị duy nhất bằng cách sử dụng bộ lọc

Bạn có thể sử dụng Bộ lọc nâng cao để trích xuất các giá trị duy nhất từ ​​một cột dữ liệu và dán chúng vào một vị trí mới. Sau đó, bạn có thể sử dụng chức năng ROWS để đếm số lượng vật phẩm trong phạm vi mới.

  1. Đảm bảo rằng hàng đầu tiên trong cột có tiêu đề cột.
  2. Trên menu Dữ liệu, trỏ đến Bộ lọc, rồi bấm Bộ lọc Nâng cao.
  3. Trong hộp thoại Bộ lọc Nâng cao, bấm Sao chép sang vị trí khác.
  4. Nếu phạm vi mà bạn đang đếm chưa được chọn, hãy xóa bất kỳ thông tin nào trong hộp Phạm vi danh sách và sau đó nhấp vào cột (hoặc chọn phạm vi) có chứa dữ liệu của bạn.
  5. Trong hộp Copy to, xóa bất kỳ thông tin nào trong hộp hoặc bấm vào hộp, sau đó bấm vào một cột trống nơi bạn muốn sao chép các giá trị duy nhất.
  6. Chọn hộp kiểm Chỉ bản ghi duy nhất và bấm OK.

    Các giá trị duy nhất từ ​​phạm vi đã chọn được sao chép vào cột mới.

  7. Trong ô trống bên dưới ô cuối cùng trong phạm vi, hãy nhập hàm ROWS. Sử dụng phạm vi các giá trị duy nhất mà bạn vừa sao chép làm đối số. Ví dụ: nếu phạm vi của các giá trị duy nhất là B1: B45, thì hãy nhập:
    = ROWS (B1: B45)


1

= SUM (1 / COUNTIF (A2: A100; A2: A100))

Xác nhận bằng Ctrl + Shift + Enter

Đối với mỗi ô, nó đếm số lần xảy ra và tính tổng các nghịch đảo của tất cả các giá trị này. Giả sử một số chuỗi hoặc số lần xuất hiện 5 lần. Nghịch đảo của nó là 0,2 được tổng 5 lần, vì vậy 1 được thêm vào. Cuối cùng, nó đưa ra số lượng các giá trị khác nhau.

Lưu ý: không hoạt động khi khoảng trống xảy ra!


0

Hãy thử liên kết này. Điều này cho thấy cách tính các giá trị duy nhất trong danh sách bỏ qua các ô trống.

http://www.feftinexcel.com/lists-arrays/count-unique-values-in-a-list/

= sum (if (tần số (khớp (Danh sách, Danh sách, 0), khớp (Danh sách, Danh sách, 0))> 0, 1))

Ví dụ: "Danh sách" là phạm vi ô của bạn:

Danh sách = $ A $ 2: $ A $ 12 OR- Danh sách = offset ($ A $ 1 ,,, khớp (rept ("z", 255), $ A: $ A)) -OR- List = offset ($ A $ 1, ,, khớp (giá trị (rept ("9", 255)), $ A: $ A))


0

= SUM (IF (FREQUENCY (IF (SUBTOTAL (3, OFFSET) (A2: A100, ROW (A2: A100) -law (A2), 0,1)), MATCH ("~" & A2: A100, A2: A100 & " ", 0)), ROW (A2: A100) -law (A2) +1), 1))

Hãy chắc chắn nhấn KIỂM SOÁT + SHIFT + ENTER sau khi dán công thức này. Đây là phạm vi của A2: A100, điều chỉnh phạm vi cho phù hợp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.