Xếp hạng liên tục?

Liên hệ QC

LearnMore

Thành viên mới
Tham gia
12/9/07
Bài viết
37
Được thích
17
Nhờ các anh/ chị nghiên cứu phụ, là có thể dùng hàm để xếp hạng liên tục như trong file đính kèm được không? Hiện tại em bó tay :=\+ !

Xin cảm ơn
 

File đính kèm

Cảm ơn bạn, nhưng trong các cách xếp hạng vẫn có khoảng trống. Có cái thì thiếu hạng 3 có cái thì thiếu hạng 2, em không quan tâm đến độ lệch giữa các giá trị (lệch 1 hay 0.5 gì đó). Em muốn các hạng phải là số nguyên liên tục.

Em cảm ơn.
 
LearnMore đã viết:
Nhờ các anh/ chị nghiên cứu phụ, là có thể dùng hàm để xếp hạng liên tục như trong file đính kèm được không? Hiện tại em bó tay :=\+ !

Xin cảm ơn
Bạn phải nói rõ quy luật xếp hạng của mình. Như vậy mới có khả năng giúp bạn được.

Có được dùng cột phụ không bạn ??

Thân!
 
Xin lỗi bạn, lúc sáng tôi gửi nhầm file. Tôi đã gửi lại file khác tại bài số 2 của topic này (vẫn dùng cột phụ).
 
Lần chỉnh sửa cuối:
Theo nhu cầu của bạn thì bạn nên tham khảo bài số 6 của ThuNghi nêu trên xem.
 
Mình đã hiểu cách làm của bạn, tuy nhiên cho hỏi là có được dùng cột phụ không vậy ??????


Thân!
 
Cái này nếu cho thêm càng nhiều cột phụ thì càng dể làm và dễ hiểu... Còn nếu ko cho thêm cột phụ thì... hơi căng à nha!
Nếu thêm cột phụ thì tôi sẽ làm theo cách sắp xếp chúng theo thứ tự tăng dần hoặc giảm dần trước.. khi ấy sẽ rất dễ tính...
ANH TUẤN
 
Để không dùng cột phụ, tại sao ta không làm một hàm ABC_RANK() nhỉ?
 
Dùng VBA thì nói làm gì. Con VBA thì trang www.cpearson.com có làm hàm ALTRANK, tôi cải biên lại thành ABC_Rank
Function ABC_RANK(number, ref, Optional order)
Dim i As Integer, j As Integer
Dim pos As Integer
Dim swap1, swap2
Dim Items As New Collection
On Error Resume Next
For i = 1 To ref.Rows.Count
Items.Add ref.Cells(i, 1), CStr(ref.Cells(i, 1).Value)
Next i
On Error GoTo 0
' Sort the unique list
For i = 1 To Items.Count - 1
For j = i + 1 To Items.Count
If Items(i) > Items(j) Then
swap1 = Items(i)
swap2 = Items(j)
Items.Add swap1, before:=j
Items.Add swap2, before:=i
Items.Remove i + 1
Items.Remove j + 1
End If
Next j
Next i
' Rank in ascending or descending order?
If IsMissing(order) Then LastArg = 0 Else LastArg = order
If LastArg = 0 Then
pos = Items.Count
Inc = -1
Else
pos = 1
Inc = 1
End If
' Find the position of number in the sorted list
For i = 1 To Items.Count
If number = Items(i) Then
ABC_RANK = pos
Exit Function
End If
pos = pos + Inc
Next i
End Function
 
Bạn dùng cái này, kô dùng cột phụ
 

File đính kèm

Vận dụng công thức của SoiBien, chuyển thành hàm sumproduct, khỏi phải Ctr Shift Enter
D5=1+SUMPRODUCT((VungRank>$A2)*(1/COUNTIF(VungRank,VungRank)))
VungRank là vùng có số liệu cần xếp TT.
 
Bác SoiBien và ThuNghi quả là trên cả tuyệt vời. Cái em cần là cái đó đó.
 
chibi đã viết:
Để không dùng cột phụ, tại sao ta không làm một hàm ABC_RANK() nhỉ?
Chibi cho hỏi cách dùng ABC_RANK() đi... Tôi tìm trong Excel ko thấy hàm này.. ko biết có phải cài thêm Add-Ins gì nữa ko? Tìm trên Google mà thấy nó nói mông lung quá.. chẳng hiểu!
ANH TUẤN
 
Ái dà... mắt mũi tèm nhèm thế nào ấy chứ... Cứ tưởng hàm của MS... hic...
Cám ơn bạn! Nhưng tôi thấy cái công thức của bạn hơi bị tuyệt chiêu đấy... nhìn mãi vẩn ko tài nào hiểu dc chổ : 9.999999E+307
SoiBien có thể giải thích thêm ko?
ANH TUẤN
 
Không biết nói gì hơn, công thức của bác soibien quá hay.

Gởi bác anhtuan1066
Chổ 9.9999999E+307 coi như 10^308, nghĩa là lấy số thật lớn để 1/... = 0 đấy bác.

Gởi bác Soibien:
Xin phép bác cho em copy vào danh sách các công thức độc đáo nhé. Cảm ơn bác.
 
Web KT

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

Back
Top Bottom