anhtuan1066
Thành viên gạo cội




- Tham gia
- 10/3/07
- Bài viết
- 5,802
- Được thích
- 6,912
1> Có nhiều bạn hỏi về việc muốn tìm số nhỏ (hoặc lớn) thứ n...
Ví dụ: trong dãy số: 1;4;4;4;7;1;9 thì số nhỏ nhất = 1, nhỏ thứ 2 = 4 (dùng hàm SMALL ko thể giải quyết được)
2> Và cũng có nhiều bạn muốn tìm 1 giãi pháp về việc xếp hạng...
Ví dụ: Cũng với dãy số trên, số 9 được xếp hạng nhất, số 7 hạng nhì... số 4 hạng 3... Và theo cách xếp hạng của hàm RANK, số 1 sẽ dc xếp hạng 6... Tuy nhiên vẫn có nhiều người muốn số 1 này phải xếp hạng 4 cơ (tức xếp tiếp theo, không nhảy bậc)
Trên GPE đã có nhiều giãi pháp cho vấn đề này nhưng chưa tổng quát lắm (có khi vẫn phải dùng đến cột phụ)
Tôi tình cờ nghĩ ra dc 1 cách: Quy chúng về bài toán trích lọc duy nhất... Các bạn theo dỏi nhé:
- Giả sử tôi có dử liệu số nằm từ A2:A31 (tưởng tượng nó là điểm thi cũng dc)
- Tôi đặt name cho vùng dử liệu này là:
(đặt name thế để phòng trường hợp dử liệu có dòng rổng)
- Thêm 1 name nữa:
(name này trích ra các phần tử duy nhất)
- Tôi có công thức tính số nhỏ (hoặc lớn) thứ n như sau:
và
(xem ví dụ tại cột E và F)
- Tôi có công thức xếp hạng cho từng phần tử trong dãy trên như sau:
(công thức mãng)
Vậy là xong! Chẳng có cột phụ nào, bất chấp dử liệu có dòng rổng
Các bạn tham khảo và góp ý nhé
Mến
ANH TUẤN
Ví dụ: trong dãy số: 1;4;4;4;7;1;9 thì số nhỏ nhất = 1, nhỏ thứ 2 = 4 (dùng hàm SMALL ko thể giải quyết được)
2> Và cũng có nhiều bạn muốn tìm 1 giãi pháp về việc xếp hạng...
Ví dụ: Cũng với dãy số trên, số 9 được xếp hạng nhất, số 7 hạng nhì... số 4 hạng 3... Và theo cách xếp hạng của hàm RANK, số 1 sẽ dc xếp hạng 6... Tuy nhiên vẫn có nhiều người muốn số 1 này phải xếp hạng 4 cơ (tức xếp tiếp theo, không nhảy bậc)
Trên GPE đã có nhiều giãi pháp cho vấn đề này nhưng chưa tổng quát lắm (có khi vẫn phải dùng đến cột phụ)
Tôi tình cờ nghĩ ra dc 1 cách: Quy chúng về bài toán trích lọc duy nhất... Các bạn theo dỏi nhé:
- Giả sử tôi có dử liệu số nằm từ A2:A31 (tưởng tượng nó là điểm thi cũng dc)
- Tôi đặt name cho vùng dử liệu này là:
PHP:
DL =OFFSET($A$2,,,MATCH(9.99999999999999E+307,OFFSET($A$2,,,1000,)),)
- Thêm 1 name nữa:
PHP:
VT =IF(DL="","",IF(MATCH(DL,DL,0)=ROW(INDIRECT("1:"&ROWS(DL))),DL,""))
- Tôi có công thức tính số nhỏ (hoặc lớn) thứ n như sau:
PHP:
SMALL(VT,Thứ)
PHP:
LARGE(VT,Thứ)
- Tôi có công thức xếp hạng cho từng phần tử trong dãy trên như sau:
PHP:
=MATCH($A2,LARGE(VT,ROW(INDIRECT("1:"&COUNT(VT)))),0)
Vậy là xong! Chẳng có cột phụ nào, bất chấp dử liệu có dòng rổng
Các bạn tham khảo và góp ý nhé
Mến
ANH TUẤN