Bảng Pivot đơn giản để đếm các giá trị duy nhất


134

Đây có vẻ như là một Bảng Pivot đơn giản để tìm hiểu. Tôi muốn thực hiện một số giá trị duy nhất cho một giá trị cụ thể mà tôi đang nhóm.

Chẳng hạn, tôi có cái này:

ABC   123
ABC   123
ABC   123
DEF   456
DEF   567
DEF   456
DEF   456

Những gì tôi muốn là một bảng trụ cho tôi thấy điều này:

ABC   1
DEF   2

Bảng xoay đơn giản mà tôi tạo chỉ cho tôi cái này (đếm có bao nhiêu hàng):

ABC   3
DEF   4  

Nhưng tôi muốn số lượng các giá trị duy nhất thay thế.

Điều tôi thực sự cố gắng làm là tìm ra giá trị nào trong cột đầu tiên không có cùng giá trị trong cột thứ hai cho tất cả các hàng. Nói cách khác, "ABC" là "tốt", "DEF" là "xấu"

Tôi chắc chắn có một cách dễ dàng hơn để làm điều đó nhưng nghĩ rằng tôi sẽ thử bàn xoay ...


8
Lưu ý rằng đối với các phiên bản gần đây của excel, câu trả lời này là thuận tiện nhất.
Dennis Jaheruddin

Câu trả lời:


108

Chèn một cột thứ 3 và trong ô C2dán công thức này

=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)

và sao chép nó xuống. Bây giờ tạo trục của bạn dựa trên cột thứ 1 và thứ 3. Xem ảnh chụp nhanh

nhập mô tả hình ảnh ở đây


+1 Tôi nghĩ rằng điều này dễ hơn một chút so với giải pháp của tôi vì nó không yêu cầu giá trị đặc biệt cho hàng đầu tiên
lc.

2
Kỹ thuật đẹp. Tôi không biết về cái này. Bạn có thể làm điều tương tự với một hàm mảng =IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)(nhấn Ctrl-Shift-Enter khi nhập công thức để nó có được {}xung quanh nó).
ErikE

Câu trả lời phổ quát, không yêu cầu bất kỳ tính năng cụ thể. Chỉ cần công thức đơn giản tốt.
Alberto De Caro

Bất kỳ ý tưởng về làm thế nào để mở rộng điều này đến một tình huống với ba cột?
tumultous_rooster

13
Lưu ý rằng câu trả lời này sẽ KHÔNG đưa ra giải pháp chính xác nếu bạn lọc ra một số hàng bằng các tùy chọn Bảng Pivot. Giả sử hàng đầu tiên được lọc ra. Tổng số ABC sau đó sẽ xuất hiện là 0!
jarlemag

250

CẬP NHẬT: Bạn có thể thực hiện việc này ngay bây giờ với Excel 2013. Tôi đã tạo câu hỏi này dưới dạng câu trả lời mới vì câu trả lời trước của tôi thực sự giải quyết được một vấn đề hơi khác.

Nếu bạn có phiên bản đó, sau đó chọn dữ liệu của bạn để tạo bảng xoay vòng và khi bạn tạo bảng của mình, hãy đảm bảo tùy chọn 'Thêm dữ liệu này vào hộp kiểm tra Mô hình dữ liệu' (xem bên dưới).

Chọn hộp bên cạnh 'Thêm dữ liệu này vào Mô hình dữ liệu'

Sau đó, khi bảng trụ của bạn mở, hãy tạo các hàng, cột và giá trị của bạn một cách bình thường. Sau đó nhấp vào trường bạn muốn tính số lượng riêng biệt và chỉnh sửa Cài đặt giá trị trường: Chỉnh sửa cài đặt giá trị trường

Cuối cùng, cuộn xuống tùy chọn cuối cùng và chọn 'Đếm riêng biệt'. Chọn tùy chọn 'Số lượng riêng biệt'

Điều này sẽ cập nhật các giá trị bảng trụ của bạn để hiển thị dữ liệu bạn đang tìm kiếm.


5
@MichaelK tốt hơn nhiều, nếu bạn có Excel 2013
jrharshath

3
Điều này cũng có thể được thực hiện đối với các bảng trụ hiện có, vì vậy chúng ta không cần phải tạo lại hơn 200 bảng để có quyền truy cập vào chức năng đếm khác biệt?
Louisa

12
Chỉ là một FYI: nếu bạn chưa lưu tệp của mình dưới dạng tệp Excel (.xlsx) (ví dụ: bạn đã mở tệp .csv), tùy chọn "Thêm dữ liệu này vào Mô hình dữ liệu" sẽ bị tắt / chuyển sang màu xám . Giải pháp đơn giản là lưu tệp dưới dạng tệp Excel.
PonyEars

9
Đây có phải là không được hỗ trợ trên Mac? Tùy chọn này không xuất hiện cho tôi. Tôi đang ở phiên bản 15.27.
jkupczak

4
Tùy chọn này thực sự không tồn tại trên máy Mac, vì Mô hình dữ liệu nói chung là một tính năng chỉ dành cho Windows.
Tomty

10

Tôi muốn đưa một tùy chọn bổ sung vào hỗn hợp không yêu cầu công thức nhưng có thể hữu ích nếu bạn cần đếm các giá trị duy nhất trong tập hợp qua hai cột khác nhau. Sử dụng ví dụ ban đầu, tôi không có:

ABC   123  
ABC   123  
ABC   123   
DEF   456  
DEF   567  
DEF   456  
DEF   456

và muốn nó xuất hiện dưới dạng:

ABC   1  
DEF   2

Nhưng một cái gì đó giống như:

ABC   123  
ABC   123  
ABC   123  
ABC   456  
DEF   123  
DEF   456  
DEF   567  
DEF   456  
DEF   456

và muốn nó xuất hiện dưới dạng:

ABC  
   123    3  
   456    1  
DEF  
   123    1  
   456    3  
   567    1

Tôi tìm thấy cách tốt nhất để đưa dữ liệu của mình vào định dạng này và sau đó có thể thao tác dữ liệu đó là sử dụng như sau:

nhập mô tả hình ảnh ở đây

Khi bạn chọn 'Chạy tổng cộng', sau đó chọn tiêu đề cho tập dữ liệu thứ cấp (trong trường hợp này sẽ là tiêu đề hoặc tiêu đề cột của tập dữ liệu bao gồm 123, 456 và 567). Điều này sẽ cung cấp cho bạn một giá trị tối đa với tổng số mục trong tập hợp đó, trong tập dữ liệu chính của bạn.

Sau đó tôi đã sao chép dữ liệu này, dán nó dưới dạng các giá trị, sau đó đặt nó vào một bảng trụ khác để thao tác dễ dàng hơn.

FYI, tôi có khoảng một phần tư triệu hàng dữ liệu nên điều này hoạt động tốt hơn nhiều so với một số cách tiếp cận công thức, đặc biệt là các phương pháp cố gắng so sánh giữa hai cột / bộ dữ liệu vì nó liên tục làm hỏng ứng dụng.


Tôi đã có một vấn đề hoàn toàn khác, nhưng câu trả lời này chỉ cho tôi đi đúng hướng. Cảm ơn.
jtolle

câu trả lời này phù hợp với nhu cầu của tôi vì tôi có 500.000 hàng mà tôi cần áp dụng công thức và máy tính của tôi hết bộ nhớ nếu tôi đang cố gắng. cảm ơn bạn!
cauldyclark

6

Tôi thấy cách tiếp cận dễ nhất là sử dụng Distinct Counttùy chọn bên dưới Value Field Settings( nhấp chuột trái vào trường trong Valueskhung). Tùy chọn cho Distinct Countlà ở dưới cùng của danh sách.

Vị trí của nơi để nhấp

Dưới đây là trước (TOP; bình thường Count) và sau (BOTTOM; Distinct Count)

ĐẾM

QUẬN DISTINCT


3
Kể từ Office 2016: Để có thể sử dụng tính năng này, phải tạo bảng xoay vòng với "Thêm dữ liệu này vào Mô hình dữ liệu".
Leo


3

Không cần thiết phải sắp xếp bảng cho công thức sau để trả về 1 cho mỗi giá trị duy nhất hiện tại.

giả sử phạm vi bảng cho dữ liệu được trình bày trong câu hỏi là A1: B7, nhập công thức sau vào Ô C1:

=IF(COUNTIF($B$1:$B1,B1)>1,0,COUNTIF($B$1:$B1,B1))

Sao chép công thức đó vào tất cả các hàng và hàng cuối cùng sẽ chứa:

=IF(COUNTIF($B$1:$B7,B7)>1,0,COUNTIF($B$1:$B7,B7))

Điều này dẫn đến kết quả là 1 được trả về lần đầu tiên tìm thấy bản ghi và 0 cho tất cả các lần sau đó.

Chỉ cần tổng hợp cột trong bảng trụ của bạn


2
Trong trường hợp bạn có một tập dữ liệu lớn, hãy sử dụng =IF(COUNTIF($B$1:$B1,B1),1,0)- theo cách này, Countif chỉ được chạy một lần!
Peter Albert

2

Cách tiếp cận vấn đề này của tôi hơi khác so với những gì tôi thấy ở đây, vì vậy tôi sẽ chia sẻ.

  1. (Tạo một bản sao dữ liệu của bạn trước)
  2. Nối các cột
  3. Loại bỏ trùng lặp trên cột nối
  4. Cuối cùng - trục trên tập kết quả

Lưu ý: Tôi muốn bao gồm các hình ảnh để làm cho điều này thậm chí dễ hiểu hơn nhưng không thể vì đây là bài viết đầu tiên của tôi;)


1

Câu trả lời của Siddharth là tuyệt vời.

Tuy nhiên , kỹ thuật này có thể gặp sự cố khi làm việc với một bộ dữ liệu lớn (máy tính của tôi bị đóng băng trên 50.000 hàng). Một số phương pháp ít xử lý hơn:

Kiểm tra tính duy nhất

  1. Sắp xếp theo hai cột (A, B trong ví dụ này)
  2. Sử dụng công thức xem ít dữ liệu hơn

    =IF(SUMPRODUCT(($A2:$A3=A2)*($B2:$B3=B2))>1,0,1) 
    

Nhiều kiểm tra duy nhất

Nếu bạn cần kiểm tra tính duy nhất trong các cột khác nhau, bạn không thể dựa vào hai loại.

Thay thế,

  1. Sắp xếp cột đơn (A)
  2. Thêm công thức bao gồm số lượng hồ sơ tối đa cho mỗi nhóm. Nếu ABC có thể có 50 hàng, công thức sẽ là

    =IF(SUMPRODUCT(($A2:$A49=A2)*($B2:$B49=B2))>1,0,1)
    

2
Một cách khác có thể ít chuyên sâu hơn về bộ xử lý là thêm cột C và trong C2 =A2&B2. Sau đó thêm một cột D và trong D2 đặt =IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0). Điền cả hai xuống. Mặc dù điều này vẫn tìm kiếm từ đầu của toàn bộ phạm vi, nhưng nó dừng lại khi tìm thấy cái đầu tiên và thay vì nhân các giá trị từ 50.000 hàng với nhau, nó chỉ phải xác định giá trị - vì vậy nó sẽ hoạt động tốt hơn nhiều.
ErikE

@ErikE Sharp - Tôi cũng nghĩ rằng kỹ thuật của bạn dừng lại ở lần tìm đầu tiên. Nhưng nếu bạn có nhiều giá trị duy nhất trong C (ví dụ: chỉ 50 ABC), bạn sẽ tiếp tục kiểm tra lượng dữ liệu khổng lồ. Tính năng thú vị: công thức của bạn hoạt động tốt nhất khi dữ liệu chưa được sắp xếp.
việc

1

Excel 2013 có thể đếm khác biệt trong pivots. Nếu không có quyền truy cập vào năm 2013 và đó là một lượng dữ liệu nhỏ hơn, tôi tạo hai bản sao của dữ liệu thô và trong bản sao b, chọn cả hai cột và xóa các bản sao. Sau đó thực hiện trục và đếm cột của bạn b.


1

Bạn có thể sử dụng COUNTIFS cho nhiều tiêu chí,

= 1 / COUNTIFS (A: A, A2, B: B, B2) và sau đó kéo xuống. Bạn có thể đặt bao nhiêu tiêu chí tùy thích vào đó, nhưng nó có xu hướng mất nhiều thời gian để xử lý.


1

Bước 1. Thêm một cột

Bước 2. Sử dụng công thức =IF(COUNTIF(C2:$C$2410,C2)>1,0,1) trong bản ghi 1

Bước 3. Kéo nó vào tất cả các bản ghi

Bước 4. Lọc '1' trong cột có công thức


0

Bạn có thể tạo một cột bổ sung để lưu trữ tính duy nhất, sau đó tổng hợp trong bảng trụ của bạn.

Ý tôi là, tế bào C1phải luôn như vậy 1. Tế bào C2nên chứa công thức =IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1). Sao chép công thức này xuống để ô C3sẽ chứa=IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1) và như vậy.

Nếu bạn có một ô tiêu đề, bạn sẽ muốn di chuyển tất cả những thứ này xuống một hàng và C3công thức của bạn sẽ là =IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1).


0

Nếu bạn đã sắp xếp dữ liệu .. tôi đề nghị sử dụng công thức sau

=IF(OR(A2<>A3,B2<>B3),1,0)

Điều này nhanh hơn vì nó sử dụng ít ô hơn để tính toán.


0

Tôi thường sắp xếp dữ liệu theo trường tôi cần để đếm số lượng riêng biệt sau đó sử dụng IF (A2 = A1,0,1); bạn nhận được sau đó nhận được 1 trong hàng trên cùng của mỗi nhóm ID. Đơn giản và không mất thời gian để tính toán trên các tập dữ liệu lớn.


0

Bạn có thể sử dụng cho cột trợ giúp cũng VLOOKUP. Tôi đã thử nghiệm và có vẻ nhanh hơn một chút COUNTIF.

Nếu bạn đang sử dụng tiêu đề và dữ liệu đang bắt đầu trong ô A2, thì trong bất kỳ ô nào trong hàng, hãy sử dụng công thức này và sao chép trong tất cả các ô khác trong cùng một cột:

=IFERROR(IF(VLOOKUP(A2;$A$1:A1;1;0)=A2;0;1);1)

-3

Tôi tìm thấy một cách dễ dàng hơn để làm điều này. Đề cập đến ví dụ của Siddarth Rout, nếu tôi muốn đếm các giá trị duy nhất trong cột A:

  • thêm một cột C mới và điền vào C2 với công thức "= 1 / COUNTIF ($ A: $ A, A2)"
  • kéo công thức xuống phần còn lại của cột
  • xoay vòng với cột A làm nhãn hàng và Sum {cột C) trong các giá trị để lấy số lượng giá trị duy nhất trong cột A

Về mặt logic, điều này có thể không hoạt động cho OP vì nó không nhìn vào cột B. Làm thế nào bạn sẽ thích ứng điều này để làm việc với nhiều cột?
ErikE
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.