Đếm dữ liệu không trùng thỏa mãn nhiều điều kiện (1 người xem)

Người dùng đang xem chủ đề này

baquang1984

Thành viên tiêu biểu
Tham gia
3/6/10
Bài viết
429
Được thích
44
Nghề nghiệp
Kỹ sư Lâm nghiệp
Em chào các thầy cô và các thành viên trên diễn đàn GPE!
Em có tham khảo nhiều hàm đếm không trùng trên diễn đàn của một số thành viên và thầy Ndu em làm theo hướng dẫn của thầy tuy nhiên kết quả của em bằng 0 không hiểu sai ở đâu. Mong được sự giúp đỡ của các thầy cô và các thành viên trên diễn đàn.
yêu cầu của em là đến số chủ ở cột A Sheet3 điền dữ liệu vào cột F Sheet16 thảo mãn 3 điều kiện được thể hiện tại cột A B C Sheet16 dữ liệu tìm kiếm
Cột A sheet16 tìm ở cột B sheet3, Cột B sheet16 tìm ở cột K sheet3, Cột C sheet16 tìm ở cột M sheet3
Hàm em viết theo bài tham khảo của thầy Ndu:
PHP:
F2 =COUNT(1/FREQUENCY(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$A$2:$A$7393<>"";MATCH(Sheet3!$A$2:$A$7393;Sheet16!A2:A7393;0)));(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$A$2:$A$7393<>"";MATCH(Sheet3!$A$2:$A$7393;Sheet16!A2:A7393;0))))))

PHP:
G2 =COUNT(1/FREQUENCY(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$L$2:$L$7393<>"";MATCH(Sheet3!$L$2:$L$7393;Sheet16!L2:L7393;0)));(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$L$2:$L$7393<>"";MATCH(Sheet3!$L$2:$L$7393;Sheet16!L2:L7393;0))))))
Em cảm ơn các thành viên trên diễn đàn!
 

File đính kèm

...............
yêu cầu của em là đến số chủ ở cột A Sheet3 điền dữ liệu vào cột F Sheet16 thảo mãn 3 điều kiện được thể hiện tại cột A B C Sheet16 dữ liệu tìm kiếm
Cột A sheet16 tìm ở cột B sheet3, Cột B sheet16 tìm ở cột K sheet3, Cột C sheet16 tìm ở cột M sheet3
Hàm em viết theo bài tham khảo của thầy Ndu:
.......................
Chào baquang1984,

Bạn thử công thức của thầy NDU mà tôi đã chỉnh lại:
PHP:
F2=COUNT(1/FREQUENCY(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$A$2:$A$7393<>"";MATCH(Sheet3!$A$2:$A$7393;Sheet3!$A$2:$A$7393;0)));(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$A$2:$A$7393<>"";MATCH(Sheet3!$A$2:$A$7393;Sheet3!$A$2:$A$7393;0))))))
nhấn tổ hợp phím Ctrl+Shift+Enter, rồi fill xuống
PHP:
G2=COUNT(1/FREQUENCY(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$L$2:$L$7393<>"";MATCH(Sheet3!$L$2:$L$7393;Sheet3!$L$2:$L$7393;0)));(IF((Sheet3!$B$2:$B$7393=Sheet16!A2)*(Sheet3!$K$2:$K$7393=Sheet16!B2)*(Sheet3!$M$2:$M$7393=Sheet16!C2);IF(Sheet3!$L$2:$L$7393<>"";MATCH(Sheet3!$L$2:$L$7393;Sheet3!$L$2:$L$7393;0))))))
nhấn tổ hợp phím Ctrl+Shift+Enter, rồi fill xuống.

Đây là công thức mảng và với dữ liệu >7000 dòng máy sẽ trì trệ, nên bạn phải suy nghĩ thêm khi áp dụng cho công việc.

Chúc bạn ngày vui
,
 
Em cảm ơn ạ hàm anh sửa lại chạy ok em làm tổng hợp dữ liệu nên không dùng lâu. Nếu công việc này lặp đi lặp lại hàng ngày chắc cũng phải nhờ các thành viên chuyển sang Code VBA giúp
 
Em cảm ơn ạ hàm anh sửa lại chạy ok em làm tổng hợp dữ liệu nên không dùng lâu. Nếu công việc này lặp đi lặp lại hàng ngày chắc cũng phải nhờ các thành viên chuyển sang Code VBA giúp
Chào baquang1984,

Góp vui thêm cho bạn 1 công thức nữa để bạn tham khảo:
PHP:
F2=COUNT(MATCH(ROW($1:$7392),MATCH(Sheet3!$A$2:$A$7393,Sheet3!$A$2:$A$7393,0)*(Sheet16!$A2&Sheet16!$B2&Sheet16!$C2=Sheet3!$B$2:$B$7393&Sheet3!$K$2:$K$7393&Sheet3!$M$2:$M$7393),0))
Ctrl+Shift+Enter rồi fill xuống.
PHP:
G2=COUNT(MATCH(ROW($1:$7392),MATCH(Sheet3!$L$2:$L$7393,Sheet3!$L$2:$L$7393,0)*(Sheet16!$A2&Sheet16!$B2&Sheet16!$C2=Sheet3!$B$2:$B$7393&Sheet3!$K$2:$K$7393&Sheet3!$M$2:$M$7393),0))
Ctrl+Shift+Enter rồi fill xuống.

Nếu dữ liệu quá nhiều bạn cũng nên tham khảo thêm Pivot Table nha.

Chúc bạn ngày vui
 
Chào baquang1984,

Góp vui thêm cho bạn 1 công thức nữa để bạn tham khảo:
PHP:
F2=COUNT(MATCH(ROW($1:$7392),MATCH(Sheet3!$A$2:$A$7393,Sheet3!$A$2:$A$7393,0)*(Sheet16!$A2&Sheet16!$B2&Sheet16!$C2=Sheet3!$B$2:$B$7393&Sheet3!$K$2:$K$7393&Sheet3!$M$2:$M$7393),0))
Ctrl+Shift+Enter rồi fill xuống.
PHP:
G2=COUNT(MATCH(ROW($1:$7392),MATCH(Sheet3!$L$2:$L$7393,Sheet3!$L$2:$L$7393,0)*(Sheet16!$A2&Sheet16!$B2&Sheet16!$C2=Sheet3!$B$2:$B$7393&Sheet3!$K$2:$K$7393&Sheet3!$M$2:$M$7393),0))
Ctrl+Shift+Enter rồi fill xuống.

Nếu dữ liệu quá nhiều bạn cũng nên tham khảo thêm Pivot Table nha.

Chúc bạn ngày vui
Đúng là khi mình là với dữ liệu lơn thì hàm sẽ là cả vấn đề do vậy có thể dùng Pivot Table như anh nói và có thể dùng VBA anh có thể giúp em một chương trình Pivot Table để ra được kết quả như bảng em gửi được không ạ. Em cảm ơn nhiều ạ
 
Đúng là khi mình là với dữ liệu lơn thì hàm sẽ là cả vấn đề do vậy có thể dùng Pivot Table như anh nói và có thể dùng VBA anh có thể giúp em một chương trình Pivot Table để ra được kết quả như bảng em gửi được không ạ. Em cảm ơn nhiều ạ
Chào baquang1984,

Thử đề nghị bạn giải pháp khác thêm 2 cột phụ:
1. Đếm số thứ tự phát sinh đầu tiên của các "Số chủ" tương ứng theo mã: Diachi, LoaiDat, Macap.
2. Đếm số thứ tự phát sinh đầu tiên của các "Số GCN" tương ứng theo mã: Diachi, LoaiDat, Macap.

Cụ thể Sheet3, thêm cột N và O
Mã:
N2=(COUNTIFS($A$2:$A2,$A2,$B$2:$B2,$B2,$K$2:$K2,$K2,$M$2:$M2,$M2)=1)*1
Fill xuống
Mã:
O2=(COUNTIFS($L$2:$L2,$L2,$B$2:$B2,$B2,$K$2:$K2,$K2,$M$2:$M2,$M2)=1)*1
Fill xuống

Sheet16, tổng hợp bình thường như sau:
Mã:
F2=COUNTIFS(Sheet3!$B$2:$B$7393,$A2,Sheet3!$K$2:$K$7393,$B2,Sheet3!$M$2:$M$7393,$C2,Sheet3!N$2:N$7393,1)
Fill xuống
Mã:
G2=COUNTIFS(Sheet3!$B$2:$B$7393,$A2,Sheet3!$K$2:$K$7393,$B2,Sheet3!$M$2:$M$7393,$C2,Sheet3!O$2:O$7393,1)
Fill xuống

Bạn xem file đính kèm.

Giải pháp này nhẹ hơn dùng công thức mảng, nhưng nếu tối ưu bạn phải nhờ anh em khác tạo Code VBA --=0

Chúc bạn ngày vui.
 

File đính kèm

Em cảm ơn ạ một giải pháp thật hay
 

Bài viết mới nhất

Back
Top Bottom