Giúp đỡ liệt kê dữ liệu theo số lần lặp (1 người xem)

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

o0khatvong0o

Thành viên mới
Tham gia
17/4/10
Bài viết
26
Được thích
8
Nhờ các thầy giúp đỡ gỡ rối cho bài toán như sau

ở cột B có các dữ liệu khác nhau. tương ứng với từng ô dữ liệu đó là số lần lặp cho nó theo từng hàng.

Yêu cầu là dùng hàm để đưa ra được kết quả trả về như ở cột E

hay nói cách khác là trả về dãy các ô để đếm "range" từ kết quả của hàm COUNTIF

= COUNTIF(range, criteria)

em đang rất cần mong nhận được sự giúp đỡ từ các thầy.
 

File đính kèm

Nhờ các thầy giúp đỡ gỡ rối cho bài toán như sau
ở cột B có các dữ liệu khác nhau. tương ứng với từng ô dữ liệu đó là số lần lặp cho nó theo từng hàng.
Yêu cầu là dùng hàm để đưa ra được kết quả trả về như ở cột E
hay nói cách khác là trả về dãy các ô để đếm "range" từ kết quả của hàm COUNTIF
= COUNTIF(range, criteria)
em đang rất cần mong nhận được sự giúp đỡ từ các thầy.
Tạo cột phụ ở cột A, A4:
Mã:
=SUM(C$3:C3)+MAX(C3)
Công thức tại F4:
Mã:
=IF(ROW(A1)<=SUM($C$4:$C$12),VLOOKUP(ROW(A1),$A$4:$B$12,2),"")
 

File đính kèm

Tạo cột phụ ở cột A, A4:
Code:
=SUM(C$3:C3)+MAX(C3)
Công thức tại F4:
Code:
=IF(ROW(A1)<=SUM($C$4:$C$12),VLOOKUP(ROW(A1),$A$4:$B$12,2),"")
paperclip.png
Tập tin đính kèm
Cảm ơn đã giúp đỡ.
Mình hiểu cách mà bạn làm.
Tuy nhiên với cách làm như vậy kết quả trả ra chỉ là tương đối
ví dụ trong kế quả trả ra ở cột E sẽ có suất hiện tới 3 chữ "d" và với các dữ liệu nhiều hơn nữa thì sự sai lệch về kết quả rất lớn.

Các thầy còn cách giải quyết nào nữa không giúp đỡ em với ạ.
 
Lần chỉnh sửa cuối:
Cảm ơn đã giúp đỡ.
Mình hiểu cách mà bạn làm.
Tuy nhiên với cách làm như vậy kết quả trả ra chỉ là tương đối
ví dụ trong kế quả trả ra ở cột E sẽ có suất hiện tới 3 chữ "d" và với các dữ liệu nhiều hơn nữa thì sự sai lệch về kết quả rất lớn.

Các thầy còn cách giải quyết nào nữa không giúp đỡ em với ạ.
Xin lỗi đã up sai kết quả, A4 bạn gõ 0, A5 bạn gõ công thức: =SUM(C$4:C4)+1 và kéo xuống.
Đang ngâm cứu không sử dụng cột phụ như bác Cò nói.
 

File đính kèm

Nhờ các thầy giúp đỡ gỡ rối cho bài toán như sau

ở cột B có các dữ liệu khác nhau. tương ứng với từng ô dữ liệu đó là số lần lặp cho nó theo từng hàng.

Yêu cầu là dùng hàm để đưa ra được kết quả trả về như ở cột E

hay nói cách khác là trả về dãy các ô để đếm "range" từ kết quả của hàm COUNTIF

= COUNTIF(range, criteria)

em đang rất cần mong nhận được sự giúp đỡ từ các thầy.

làm như sau:

- Tại E3 nhập chữ: Kết Quả

- tại E4 nhập công thức sau:

=IF(ROWS($1:1)>SUM($C$4:$C$12),"", IF(COUNTIF($B$4:$B$12,E3)=0,$B$4,IF(COUNTIF($K$3:$K3,E3)<VLOOKUP(E3,$B$4:$C$12,2,0),E3,INDEX(B4:B12,SUMPRODUCT(1/COUNTIF(E$3:E3,E$3:E3))))))

- copy cho E5, E6, ... đến khi là kQ ô là khoảng trắng

là xong
 
làm như sau:
- Tại E3 nhập chữ: Kết Quả
- tại E4 nhập công thức sau:
=IF(ROWS($1:1)>SUM($C$4:$C$12),"", IF(COUNTIF($B$4:$B$12,E3)=0,$B$4,IF(COUNTIF($K$3:$K3,E3)<VLOOKUP(E3,$B$4:$C$12,2,0),E3,INDEX(B4:B12,SUMPRODUCT(1/COUNTIF(E$3:E3,E$3:E3))))))
- copy cho E5, E6, ... đến khi là kQ ô là khoảng trắng
là xong
Hình như phải viết lại như vậy:
Mã:
=IF(ROWS(1:1)>SUM($C$4:$C$12),"",IF(COUNTIF($B$4:$B$12,E3)=0,$B$4,IF(COUNTIF([B][COLOR=#0000cd]$E$3:$E3[/COLOR][/B],E3)<VLOOKUP(E3,$B$4:$C$12,2,0),E3,INDEX($B$4:$B$12,SUMPRODUCT(1/COUNTIF(E$3:E3,E$3:E3))))))
 
Hình như phải viết lại như vậy:
Mã:
=IF(ROWS(1:1)>SUM($C$4:$C$12),"",IF(COUNTIF($B$4:$B$12,E3)=0,$B$4,IF(COUNTIF([B][COLOR=#0000cd]$E$3:$E3[/COLOR][/B],E3)<VLOOKUP(E3,$B$4:$C$12,2,0),E3,INDEX($B$4:$B$12,SUMPRODUCT(1/COUNTIF(E$3:E3,E$3:E3))))))

Đúng rui, copy nhầm lẫn quá, nguy hiểm, (và thêm cả khung diễn đàn copy cũng làm sai công thức - như bác concogia thấy trên)
Nên:

- Nhập "Kết quả" tại E3,

- Tại E4 nhập công thức

PHP:
=IF(ROWS($1:1)>SUM($C$4:$C$12),"",  IF(COUNTIF($B$4:$B$12,E3)=0,$B$4,IF(COUNTIF(E$3:E3,E3)<VLOOKUP(E3,$B$4:$C$12,2,0),E3,INDEX($B$4:$B$12,SUMPRODUCT(1/COUNTIF(E$3:E3,E$3:E3))))))

- Copy CT trên cho E5, E6, ... đến khi là kQ ô là khoảng trắng

* chú ý: $B$4:$B$12 phải là danh sách duy nhất (chắc đúng thực tế - vì đã ghi lặp tại cột C, không cớ gì mà không duy nhất tại B)
 
Lần chỉnh sửa cuối:
Thêm một cách viết, kết quả ở cột H cell [H3] nhập "Kết quả", cell [H4] nhập:
=IF(ROW(A1)>SUM($C$4:$C$12),"",IF(H3="Kết quả",OFFSET($B$3,1,0),IF(COUNTIF($H$3:H3,H3)=OFFSET($B$3,MATCH(H3,$B$4:$B$12,0),1),OFFSET($B$3,MATCH(H3,$B$4:$B$12,0)+1,),H3)))
kéo xuống, chán thì nghỉ
To bạn Vodoi2x
chú ý: $B$4:$B$12 phải là danh sách duy nhất (chắc đúng thực tế - vì đã ghi lặp tại cột C, không cớ gì mà không duy nhất tại B)
cái này không lo vì chủ topic có viết:
Nhờ các thầy giúp đỡ gỡ rối cho bài toán như sau
ở cột B có các dữ liệu khác nhau. tương ứng với từng ô dữ liệu đó là số lần lặp cho nó theo từng hàng.
Híc, công thức của mình cũng "tèo" nếu dữ liệu cột không duy nhất
Thân
 
Thêm một cách nữa cho bạn tham khảo
Tại F4
Mã:
=IF(ROWS($1:1)>SUM($C$4:$C$12),"",INDEX($B$4:$B$12,MATCH(COUNTA($F$2:F2),SUBTOTAL(109,OFFSET($C$3,,,ROW(INDIRECT("1:"&ROWS($C$4:$C$12))))),1)))
Ctrl + Shift + Enter
 
Mình thấy làm đơn giản vậy cho khoẻ H4 nhập chữ a rồi H5 chơi công thức này cho gọn

=IF(COUNTIF($H$4:H4,H4),INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0),2),H4,INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0)+1,1))

Thật sự công thức bị knockout nếu không trùng cách dnh46 khắc phục được nhược điểm trên mà công thức mảng thì hơn nặng mình cũng mặn mà với chúng thà dùng cột phụ còn hơn với dữ liệu lớn
 
Mình thấy làm đơn giản vậy cho khoẻ H4 nhập chữ a rồi H5 chơi công thức này cho gọn

=IF(COUNTIF($H$4:H4,H4),INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0),2),H4,INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0)+1,1))

Thật sự công thức bị knockout nếu không trùng cách dnh46 khắc phục được nhược điểm trên mà công thức mảng thì hơn nặng mình cũng mặn mà với chúng thà dùng cột phụ còn hơn với dữ liệu lớn
Hình như công thức này của bạn có gì đó chưa ổn lắm.
 
Hình như công thức này của bạn có gì đó chưa ổn lắm.

Mình đã kiểm tra trước khi post thấy ổn mà chỉ có điều thủ công ở bước đầu thôi nhập giá trị vào H4 rồi H5 dùng công thức, công thức bạn mình đã test thì ok chỉ có điều là công thức mảng để mở mang kiến thức rất hay.
 
Thực ra dữ liệu nhiều dòng nên sử dụng 1 cột phụ rồi VLOOKUP, tính toán nhẹ, chiêu này mình vẫn hay áp dụng, giao cho người khác, dễ chỉnh sửa và quản lý.
 
Mình đã kiểm tra trước khi post thấy ổn mà chỉ có điều thủ công ở bước đầu thôi nhập giá trị vào H4 rồi H5 dùng công thức, công thức bạn mình đã test thì ok chỉ có điều là công thức mảng để mở mang kiến thức rất hay.
Mình test thì kết quả như hình này bạn

New Picture (2).jpg
 
Thêm một cách nữa cho bạn tham khảo
Tại F4
Mã:
=IF(ROWS($1:1)>SUM($C$4:$C$12),"",INDEX($B$4:$B$12,MATCH(COUNTA($F$2:F2),SUBTOTAL(109,OFFSET($C$3,,,ROW(INDIRECT("1:"&ROWS($C$4:$C$12))))),1)))
Ctrl + Shift + Enter

Rất sáng tạo khi áp dụng Subtotal -- dùng cách này thì k cần y.c DS duy nhất như các công thức khác


Để bớt việc Ctrl+Shìft+ Enter, và ngắn gọn chút (bỏ countA, indirect), chỉnh sửa chút như sau:

thì công thức cho H4 như sau
PHP:
=IF(ROWS($1:1)>SUM($C$4:$C$12),"",INDEX($B$4:$B$12,MATCH(ROWS($1:1)-1,INDEX(SUBTOTAL(9,OFFSET($C$3,,,ROW($1:$9))),0),1)))
bấm enter kết thúc như CT bình thường

--> kéo công thức xuống đến khi gặp ""

trong đó: chú ý $9 trong ROW($1:$9)-- 9 chính là số dòng dữ liệu $B$4:$B$12 (vì chắc chắn đã biết vùng DL dĩ nhiên sẽ biết số dòng DL thôi)
 
Lần chỉnh sửa cuối:
Mình thấy làm đơn giản vậy cho khoẻ H4 nhập chữ a rồi H5 chơi công thức này cho gọn

=IF(COUNTIF($H$4:H4,H4),INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0),2),H4,INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0)+1,1))

Thật sự công thức bị knockout nếu không trùng cách dnh46 khắc phục được nhược điểm trên mà công thức mảng thì hơn nặng mình cũng mặn mà với chúng thà dùng cột phụ còn hơn với dữ liệu lớn

Công thức này chắc nhầm dấu 1 chút (nên còn lỗi như Dhn46 đề cập trên), đúng chắc phải là
PHP:
=IF(COUNTIF($H$4:H4,H4) < INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0),2), H4, INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0)+1,1))

Công thức này khá tốt và giản đơn,


------------------------------------------tuy thế
Nên đổi thành thế này cho ngắn gọn hơn

- Tại ô H4 nhập công thức
PHP:
=B4
- tại ô H5 nhập công thức
PHP:
=IF(COUNTIF($H$4:H4,H4)<VLOOKUP(H4,$B$4:$C$12,2,0),H4,INDEX($B$4:$B$12,MATCH(H4,$B$4:$B$12,0)+1))
- kéo công thức tiếp cho H5, H6,...., đến khi #REF, thì là đạt kết quả
 
Lần chỉnh sửa cuối:
Công thức này chắc nhầm dấu 1 chút (nên còn lỗi như Dhn46 đề cập trên), đúng chắc phải là
PHP:
=IF(COUNTIF($H$4:H4,H4) < INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0),2), H4, INDEX($B$4:$C$12,MATCH(H4,$B$4:$B$12,0)+1,1))

Công thức này khá tốt và giản đơn,


------------------------------------------tuy thế
Nên đổi thành thế này cho ngắn gọn hơn

- Tại ô H4 nhập công thức
PHP:
=B4
- tại ô H5 nhập công thức
PHP:
=IF(COUNTIF($H$4:H4,H4)<VLOOKUP(H4,$B$4:$C$12,2,0),H4,INDEX($B$4:$B$12,MATCH(H4,$B$4:$B$12,0)+1))
- kéo công thức tiếp cho H5, H6,...., đến khi #REF, thì là đạt kết quả
Các công thức này đều không đúng nếu có dữ liệu ở cột Data lặp lại. Vì vậy tôi đề xuất công thức này:
Mã:
=INDEX($B$4:$B$12,SUMPRODUCT(--(SUBTOTAL(9,OFFSET($C$4,,,ROW($B$4:$B$12)-3))<ROW(A1)))+1)
 

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

Back
Top Bottom