Hàm đếm nhưng loại bỏ đếm trùng.

Liên hệ QC
Cảm ơn thầy ndu96081631 và vodoi2x . Em đã làm được ,nhưng công thức này dường như vãn chưa chính xác và chờ xử lý hơi lâu. Còn tuyệt chiêu nào khác mong chỉ giúp em sớm.
 
Cảm ơn thầy ndu96081631 và vodoi2x . Em đã làm được ,nhưng công thức này dường như vãn chưa chính xác và chờ xử lý hơi lâu. Còn tuyệt chiêu nào khác mong chỉ giúp em sớm.
Mình nghĩ dùng code có thể khoảng 10 giây cho 50.000 dòng dữ liệu của bạn, còn không bạn nhờ Thầy Ptm hướng dẫn "chơi" nó bằng Pivot thôi
 
Dùng cách nào thỏa & nhanh nhất. Mọi ngưới giúp mình nhé.
 
Lần chỉnh sửa cuối:
Không được đâu bạn, COUNTIF(MẢNG, MẢNG) chỉ làm việc với mảng cụ thể trên bảng tính (VD: A1:A100) chứ không làm việc với mảng tạo ra từ điều kiện (VD: mảng IF(A1:A100=D15,B1:B100,"")). Do đó phải dùng MATCH và FREQUENCY.
 
Thêm một công thức nữa hôm qua vừa học thày Ndu:
PHP:
=COUNT(1/FREQUENCY(MATCH(A1:A8;A1:A8;0);MATCH(A1:A8;A1:A8;0)))

Không ngờ thày còn có công thức hay hơn
PHP:
=SUMPRODUCT(1/COUNTIF(A1:A8,A1:A8))
.
Giả sửa A1:A8 có cell rổng thì bạn tính sao đây?
Ẹc... Ẹc...
Nghiên cứu xem (là tôi đang nói đến công thức SUMPRODUCT đấy nha)
 
Giả sửa A1:A8 có cell rổng thì bạn tính sao đây?
Ẹc... Ẹc...
Nghiên cứu xem (là tôi đang nói đến công thức SUMPRODUCT đấy nha)
Dạ, rỗng thì thế này ạ :
PHP:
=SUMPRODUCT(($A$1:$A$8<>"")/COUNTIF($A$1:$A$8,$A$1:$A$8&""))
Bon chen tý, hi hi!
 
Cho mình hỏi, trường hợp muốn đếm số ký tự (hoặc số hoặc text) trong 1 cell và những ký tự trùng nhau thì chỉ coi là 1 thôi,
ví dụ:
Tại A1:
- có dữ liệu: 88922265 thì Công thức ở B1 sẽ cho kết quả là: 5

hoặc

- Có dữ liệu: ccvvvuqkd thì Công thức ở B1 sẽ cho kết quả là: 6

Cám ơn các bạn nhiều.
 
Cho mình hỏi, trường hợp muốn đếm số ký tự (hoặc số hoặc text) trong 1 cell và những ký tự trùng nhau thì chỉ coi là 1 thôi,
ví dụ:
Tại A1:
- có dữ liệu: 88922265 thì Công thức ở B1 sẽ cho kết quả là: 5

hoặc

- Có dữ liệu: ccvvvuqkd thì Công thức ở B1 sẽ cho kết quả là: 6

Cám ơn các bạn nhiều.
Gõ công thức này vào cell B1 thử xem:
PHP:
=SUMPRODUCT(1/(LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))))
Lưu ý: ở đây ký tự khoảng trắng cũng tính luôn nha
 
Cho em hỏi ké một chút là bây giờ đã biết được số đối tượng thuộc mảng rồi, bgiờ làm sao để cho hiện ra cái mảng sau khỉ đã lọc các giá trị trùng.Ví dụ mảng từ A1:A8 lần lượt là 1 2 4 4 3 2 1 4, thì dùng cái hàm như thế nào em không biết giờ hiện ra ở ô B1: B4 lần lượt là 1 2 3 4
 
mọi người giúp em với.
hiện tại em có một bảng dữ liệu rất nhiều con số ( có khoảng 1tr số trong cột từ A1 đến A....)
bjo em muốn lọc bỏ số trùng nhau và tạo ra một cột khác vd: B1 đến B..... và sau đó em muốn đến số lặp trùng của các phần tử đó.
VD:
cột a --- cột B --- cột C
5432343 --- 5432343--- 3
1245 --- 1245 --- 2
5432343--- 123--- 3
1245
5432343
123
123
123
nhưng vì dữ liệu của em ở cột A có khoảng 1tr phần tử. bác nào có thể giúp em không ạ.
Hiện tại em lọc số trùng nhau bằng advanced Filter trong excell ạ. nhưng kết quả lại ra không đúng ạ.
Em có tham khảo hết các công thức của mọi người đưa bên trên rồi ạ. nhưng không thấy cái nào đúng cả ( có thể em chưa biết sd công thức)
mong các bác chỉ cụ thể giúp em với ạ.
Em cảm ơn các bác rất nhiều ạ.
 
mọi người giúp em với.
hiện tại em có một bảng dữ liệu rất nhiều con số ( có khoảng 1tr số trong cột từ A1 đến A....)
bjo em muốn lọc bỏ số trùng nhau và tạo ra một cột khác vd: B1 đến B..... và sau đó em muốn đến số lặp trùng của các phần tử đó.
VD:
cột a --- cột B --- cột C
5432343 --- 5432343--- 3
1245 --- 1245 --- 2
5432343--- 123--- 3
1245
5432343
123
123
123
nhưng vì dữ liệu của em ở cột A có khoảng 1tr phần tử. bác nào có thể giúp em không ạ.
Hiện tại em lọc số trùng nhau bằng advanced Filter trong excell ạ. nhưng kết quả lại ra không đúng ạ.
Em có tham khảo hết các công thức của mọi người đưa bên trên rồi ạ. nhưng không thấy cái nào đúng cả ( có thể em chưa biết sd công thức)
mong các bác chỉ cụ thể giúp em với ạ.
Em cảm ơn các bác rất nhiều ạ.
Bạn gửi file đính kèm lên nhé, mọi người ngại đánhlại file của bạn lắm
Mã:
=IFERROR(INDEX($A$4:$A$9,MATCH(0,COUNTIF($B$3:B3,$A$4:$A$9),0),0),"")
=COUNTIF($A$4:$A$9,B4)
 

File đính kèm

  • TRung.xlsx
    8.8 KB · Đọc: 52
Lần chỉnh sửa cuối:
A Chị Nào chỉ em hàm nào vừa đếm vừa lọc dữ liệu với, em tìm hoài k ra cách tính
cảm ơn

Có ô Rỗng nữa nha các Anh Chị
 

File đính kèm

  • giup em voi.xls
    18.5 KB · Đọc: 41
Lần chỉnh sửa cuối:
Cho mình hỏi, trường hợp muốn đếm số ký tự (hoặc số hoặc text) trong 1 cell và những ký tự trùng nhau thì chỉ coi là 1 thôi,
ví dụ:
Tại A1:
- có dữ liệu: 88922265 thì Công thức ở B1 sẽ cho kết quả là: 5

hoặc

- Có dữ liệu: ccvvvuqkd thì Công thức ở B1 sẽ cho kết quả là: 6

Cám ơn các bạn nhiều.
Gõ công thức này vào cell B1 thử xem:
PHP:
=SUMPRODUCT(1/(LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))))
Lưu ý: ở đây ký tự khoảng trắng cũng tính luôn nha
Hôm nay lang thang trên diễn đàn đọc được bài này thấy hay quá nhưng cứ nghĩ mãi mà vẫn chưa hiểu được công thức này của chú ndu như nào mà lại ra được kết quả như vậy. Mong chú ndu lướt qua lại bài tập này và giải thích giùm con công thức trên với ạ. Các thành viên trên GPE ai đọc được bài này và hiểu được công thức này thì giải thích cho em/ mình với . Xin cảm ơn mọi người.
 
Lần chỉnh sửa cuối:
hôm nay lang thang trên diễn đàn đọc được bài này thấy hay quá nhưng cứ nghĩ mãi mà vẫn chưa hiểu được công thức này của chú ndu như nào mà lại ra được kết quả như vậy. Mong chú ndu lướt qua lại bài tập này và giải thích giùm con công thức trên với ạ. Các thành viên trên gpe ai đọc được bài này và hiểu được công thức này thì giải thích cho em/ mình với . Xin cảm ơn mọi người.
PHP:
(len(a1)-len(substitute(a1,mid(a1,row(indirect("1:"&len(a1))),1),"")))
Đoạn này nhé, sẽ ra một mảng
PHP:
{2;2;1;3;3;3;1;1}
sumproduct(1/...) mình nghĩ Phong hiểu (1/2 rồi 1/2 rồi cộng vào)
khi cho vào sumproduct thì row(indirect("1:"&len(a 1)) là một mảng gồm lân lượt trả về 1 đến 8 ( vì len( a 1)=8)
mid(A1, I,1). Ở đây I=1-->8
=+LEN(SUBSTITUTE(A1,MID(A1,1,1),""))= 922265=6
=Len(A 1)-LEN(SUBSTITUTE(A1,MID(A1,1,1),""))=2
nên {2;2;1;3;3;3;1;1} = 2 đầu tiên là vì vậy, tương tự tới tiếp
 
Lần chỉnh sửa cuối:
PHP:
(len(a1)-len(substitute(a1,mid(a1,row(indirect("1:"&len(a1))),1),"")))
Đoạn này nhé, sẽ ra một mảng
PHP:
{2;2;1;3;3;3;1;1}
sumproduct(1/...) mình nghĩ Phong hiểu (1/2 rồi 1/2 rồi cộng vào)
khi cho vào sumproduct thì row(indirect("1:"&len(a 1)) là một mảng gồm lân lượt trả về 1 đến 8 ( vì len( a 1)=8)
mid(A1, I,1). Ở đây I=1-->8
=+LEN(SUBSTITUTE(A1,MID(A1,1,1),""))= 922265=6
=Len(A 1)-LEN(SUBSTITUTE(A1,MID(A1,1,1),""))=2
nên {2;2;1;3;3;3;1;1} = 2 đầu tiên là vì vậy, tương tự tới tiếp
Em hiểu rồi anh ạ . Xin cảm ơn anh đã giải thích rất cặn kẽ, chúc anh có ngày nghỉ cuối tuần vui vẻ.
 
khi cho vào sumproduct thì row(indirect("1:"&len(a 1)) là một mảng gồm lân lượt trả về 1 đến 8 ( vì len( a 1)=8)
Phiền anh giải thích kĩ hơn chút xíu nữa về cái chỗ hàm Row kết hợp với Indrect được không. Sao đoạn này lại cho ra kết quả là 1 mảng gồm từ 1 đến 8 hả anh.
 
Phiền anh giải thích kĩ hơn chút xíu nữa về cái chỗ hàm Row kết hợp với Indrect được không. Sao đoạn này lại cho ra kết quả là 1 mảng gồm từ 1 đến 8 hả anh.

Ở đây hàm Indirect chỉ dùng để tham chiếu tới kết quả mà "1:"&Len(A1). Ví dụ Len(A1)=8 thì khi đó hàm Indirect sẽ tham chiếu từ dòng 1:8. Bạn hãy thử gõ trên thanh formula: =Row(1:8) rồi quét chọn từ Row(1:8) bấm F9 bạn thấy được điều gì ?. Nó sẽ trả về 1 mảng {1;2;3;4;5;6;7;8} làm đối số cho hàm Mid.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom