Sắp xếp dữ liệu (1 người xem)

Liên hệ QC

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

Nguyenven1

Thành viên mới
Tham gia
30/4/08
Bài viết
12
Được thích
2
Chào anh chị,
Em có một thắc mắc nhỏ về sắp xếp dữ liệu, mong các anh chị giải đáp giùm. Em có gửi kèm theo file ở đây.
Rất mong nhận được sự giúp đỡ.
Xin cảm ơn rất nhiều.
 

File đính kèm

File đính kèm

Chào anh chị,
Em có một thắc mắc nhỏ về sắp xếp dữ liệu, mong các anh chị giải đáp giùm. Em có gửi kèm theo file ở đây.
Rất mong nhận được sự giúp đỡ.
Xin cảm ơn rất nhiều.

Bạn xem file đính kèm xem đã đúng ý của bạn chưa nhé.
 

File đính kèm

Cảm ơn hoangdanh82vn rất nhiều, nhưng anh có thể giải thích cho em công thức mà anh đã dùng không?
Một lần nữa xin cảm ơn!
 
Cách mà bạn hoangdanh82vn sử dụng cũng hay. Nhưng hơi khó hiểu một chút. Bạn nguyenven1 a bạn hoangdanh82vn đã sư dụng thủ thuật tạo Difine name để tạo công thức như file đinh kèm. Bạn có thể vào mục Insert \ Name \ Difine... để xem cách bạn ấy đặt difine name.
 
Có lẽ vì chưa hiểu lắm về Difine name nên em không hiểu được cách mà anh hoangdanh82vn đã sử dụng. Em sẽ tìm hiểu thêm.
Cũng xin cảm ơn anh duongdv. Nhưng một lần nữa (lại nữa |||||) hãy diễn giải cách mà anh sử dụng cho em hiểu đi.
 
Cách mà mình dùng rất đơn giản nhưng không biết có đáp ưng được yêu cầu của bạn không? Mình chỉ vào Data\Sort Trong hộp thoại Sort mình chọn sắp xếp giảm dần theo 2 côt: Cột xếp loại và cột điểm Văn mà
 
Cảm ơn duongdv rất nhiều. Mình đã hiểu cách mà bạn làm rồi.:cc_jockey:
 
Cảm ơn hoangdanh82vn rất nhiều, nhưng anh có thể giải thích cho em công thức mà anh đã dùng không?
Một lần nữa xin cảm ơn!

Cách của mình là dùng name và hàm mảng để trích lọc và sắp xếp dữ liệu.
Theo như mình hiểu thì bạn có một bảng liệt kê danh sách học sinh và tính xếp loại cho từng học sinh. thứ bậc xếp hạng sẽ khác nhau và bạn muốn trích lọc ra một bảng mới với họ tên sẽ được xếp theo thứ hạng giảm dần.
Cách của mình là :

- Lấy 1 chia cho điểm môn văn và cộng vào số hạng : ta sẽ có một số mới chỉ thứ hạng mới dựa trên thứ hạng cũ và số điểm của môn văn. thứ hạng càng cao thì càng tệ và sẽ được xếp ở dòng cuối cùng:
Công thức là : H3+1/C3

- để tính thứ hạng mới cho tất cả các học sinh thì dùng mảng :
Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15

- tìm thứ hạng bé nhất trong thứ hạng mới tìm được ở trên :
SMALL(Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15,ROW()-19) với ROW()=20 vì dùng cho ô B20

- So sánh thứ hạng bé nhất vừa tìm ra với tất cả thứ hạng mới tìm được ở trên :
SMALL(Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15,ROW()-19)=Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15 đến đây sẽ trả về một mảng True Fale (chỉ có 1 phần tử True ứng với thứ hạng bé nhất, còn lại đều là False).

-Tìm số chỉ dòng của những ô chứa các thứ hạng :
ROW(Sheet1!$H$3:$H$15)

- Tìm ra số chỉ dòng ứng với phần tử True false tìm được ở trên :
(SMALL(Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15,ROW()-19)=Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15)*ROW(Sheet1!$H$3:$H$15)

- Tìm số chỉ dòng lớn nhất trong mảng vừa tìm ra ở trên.
=MAX((SMALL(Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15,ROW()-19)=Sheet1!$H$3:$H$15+1/Sheet1!$C$3:$C$15)*ROW(Sheet1!$H$3:$H$15)) và được đặt tên là ROW.

- Dựa và số chì dòng tìm được ở trên, ta sẽ dò tìm các dữ liệu tương ứng với số chỏ dòng và chỉ cột trong bảng dữ liệu :
=INDEX(dl,row-2,COLUMN()) với dl=Sheet1!$A$3:$I$15

Kéo công thức xuống cho các ô còn lại
 
Lần chỉnh sửa cuối:
Name ROW mà bạn hoangdanh282vn thiết lập trong Define name chỉ cần ngắn ngọn thế này là được:
Mã:
=$H$3:$H$15-$C$3:$C$15/1000
Cuối cùng là công thức:
Mã:
=INDEX(dl,MATCH(SMALL(ROW,$A20),ROW,0),COLUMNS($A:B))
Hết sức cẩn thận với hàm ROW() và COLUMN(), vì có thể dẩn đến sai nếu vô tình Insert thêm dòng hoặc cột vào dử liệu
 
Hết sức cẩn thận với hàm ROW() và COLUMN(), vì có thể dẩn đến sai nếu vô tình Insert thêm dòng hoặc cột vào dử liệu

Có cách nào khôi phục được việc này không hả thày?

Chắc là khó vì nếu như vậy thì nó còn gì là tính tương đối nữa.
 

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

Back
Top Bottom