Bài toán Lọc dữ liệu từ bảng số để sắp xếp và thống kê! (1 người xem)

  • Thread starter Thread starter tqh5985
  • Ngày gửi Ngày gửi
Liên hệ QC

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

tqh5985

Thành viên mới
Tham gia
15/2/08
Bài viết
15
Được thích
3
Hic, Các bác giúp em giải quyết bài tập này với. Cho 1 bảng số liệu gồm nhiều số tự nhiên bất kỳ như file đính kèm. Trong bảng số liệu có những số xuất hiện nhiều lần. Nhiệm vụ là lọc ra danh sách các số theo thứ tự từ lớn đến nhỏ, đồng thời thống kê số lần xuất hiện của mỗi số đó.Các bác đưa giúp e cách giải quyết bằng công thức và hàm số nhé! E dốt lắm, ko biết dùng VBA. Nếu bài toán đưa ra hơi ngu ngơ, mong các bác thông cảm. Vì e đang cần gấp quá!
 

File đính kèm

Bạn thử thí nghiệm bằng cách nhấn vào nút cảm ơn ở góc phía dưới bên trái bài của mình xem sao?
Giả sử danh sách muốn tạo của bạn bắt đầu từ D13, đếm số lần từ E13
Tại D13:
Mã:
=LARGE(IF(COUNTIF($D$12:D12,$A$3:$C$9)=0,$A$3:$C$9,""),1)
Kết thúc bằng Ctrl-shift-enter . Bạn sẽ thấy có cặp dấu {} bao quanh công thức.
E13:
Mã:
=COUNTIF($A$3:$C$9,D13)
Copy 2 ô này xuống
 
Bài này đặt Name như thế nào để không phải Ctrl+Shift+Enter hả anh bebo021999? Tôi cũng đang cần làm bài loại này. Rất mong anh và mọi người chỉ giúp./.
 
Bài này đặt Name như thế nào để không phải Ctrl+Shift+Enter hả anh bebo021999? Tôi cũng đang cần làm bài loại này. Rất mong anh và mọi người chỉ giúp./.
Name chỉ rút gọn công thức thôi, nếu để name vào công thức mảng thì vẫn là công thức mảng.
 
Bạn thử thí nghiệm bằng cách nhấn vào nút cảm ơn ở góc phía dưới bên trái bài của mình xem sao?
Giả sử danh sách muốn tạo của bạn bắt đầu từ D13, đếm số lần từ E13
Tại D13:
Mã:
=LARGE(IF(COUNTIF($D$12:D12,$A$3:$C$9)=0,$A$3:$C$9,""),1)
Kết thúc bằng Ctrl-shift-enter . Bạn sẽ thấy có cặp dấu {} bao quanh công thức.
E13:
Mã:
=COUNTIF($A$3:$C$9,D13)
Copy 2 ô này xuống

Cám ơn bác bebo nhiều nhiều!E không tìm thấy nổi nút thank đâu! Bài toán của e đã được giải quyết. Nhưng e không hiểu mục đích ctrl+shift+enter để làm j vậy bác? Nếu bác giải thích qua 1 chút về thuật toán bác sử dụng thì tốt quá!
 
Công thức countif($d$12,d12,....) e không hiểu mục đích của bác lắm. Sao lại lấy ô d12 hả bác?
 
Giải thích chút xíu: Xét tại ô D15, phần tử thứ 3:
=LARGE(IF(COUNTIF($D$12:D14,$A$3:$C$9)=0,$A$3:$C$9,""),1)

$D$14:D14 là danh sách các giá trị lớn nhất không trùng đã lọc trước đó, bao gồm 300 và 95.
Bạn cần duyệt từng ô của vùng A3:C9 (tức là dùng COUNTIF($D$12:D14,$A$3:$C$9)), nếu trùng với 300 và 95 thì bỏ qua, không trùng thì lấy: IF(COUNTIF($D$12:D14,$A$3:$C$9)=0,$A$3:$C$9,""). Đây chính là mảng mới tạo ra từ A3:C9, đã loại bỏ các giá trị 300 và 95
Lấy LARGE của mảng này sẽ ra giá trị 90

Như vậy, tại dòng bất kỳ từ D13 trở đi, công thức sẽ tự động tính được các giá trị đã trích lọc trước đó phía trên, loại trừ ra, để tìm ra giá trị lớn nhất không trùng kế tiếp

Đây là công thức mảng nên phải dùng ctrl-shift-enter thay vì enter như bình thường. Đây là quy định của excel rồi.
 
Web KT

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

Back
Top Bottom