Đếm số lượng và xếp hạng (1 người xem)

Liên hệ QC

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

0167767

Thành viên hoạt động
Tham gia
10/3/12
Bài viết
141
Được thích
10
1/ Đếm số lượng Huy chương V; B; Đ
2/ Xếp hạng theo thứ tự V; B; Đ
3/ Nếu có số lượng V;B;Đ = nhau thì sẽ xét đến thành tích các môn theo thứ tự: Bóng đá, bóng chuyền, điền kinh, đá cầu, cờ vua, đẩy gậy, bi sắt... (Ưu tiên cho nữ trước).
Những gì mình hỏi có trong file mong các bạn giúp dùm mình nhé
 

File đính kèm

Gợi ý : Bạn nên đặt ra chỉ tiêu về điểm số cho từng loại huy chương sau đó tính điểm và xếp loại. số điểm càng chênh lệch thì sắp xếp càng chính xác. Bạn xem thử nhé!
 

File đính kèm

1/ Đếm số lượng Huy chương V; B; Đ
2/ Xếp hạng theo thứ tự V; B; Đ
3/ Nếu có số lượng V;B;Đ = nhau thì sẽ xét đến thành tích các môn theo thứ tự: Bóng đá, bóng chuyền, điền kinh, đá cầu, cờ vua, đẩy gậy, bi sắt... (Ưu tiên cho nữ trước).
Những gì mình hỏi có trong file mong các bạn giúp dùm mình nhé
Bài xếp hạng ưu tiên này thì có 2 cách là so sánh số và so sánh chuỗi, công thức hơi khó làm vì giới hạn excel có 15 số và không có hàm nối chuỗi, tôi làm cho bạn hàm tự tạo sắp xếp theo kiểu so sánh chuỗi (lưu ý những môn nào Nữ được ưu tiên thì để trước Nam), :
PHP:
Function createstr(ByVal vari)
Dim i As Long, j As Long, arr, darr, result, lenstr As Long, str As String
arr = vari
ReDim darr(1 To UBound(arr, 2), 1), result(1 To UBound(arr), 1 To 1)
For i = 1 To UBound(arr, 2)
    lenstr = 0
    For j = 1 To UBound(arr)
        lenstr = IIf(lenstr > Len(arr(j, i)), lenstr, Len(arr(j, i)))
    Next j
    darr(i, 1) = lenstr
Next i
For i = 1 To UBound(arr)
    str = ""
    For j = 1 To UBound(arr, 2)
        str = str & Format(arr(i, j), String(darr(j, 1), "0"))
    Next j
    result(i, 1) = str
Next i
createstr = result
End Function
Function createarr(ByVal vari, ByVal n As Long)
Dim i As Long, j As Long, z As Long, arr, result, lenstr As Long, str As String, m As Long, total As Long
arr = vari
ReDim result(1 To UBound(arr), 1 To Int(UBound(arr, 2) / n))
For i = 1 To UBound(arr)
    z = 0
    For j = 1 To UBound(arr, 2) Step n
        total = 0
        For m = 1 To n
            total = total + arr(i, j + m - 1)
        Next m
        z = z + 1: result(i, z) = total
    Next j
Next i
createarr = result
End Function
Function rankk(ByVal vari1, ByVal vari2)
Dim arrstr, arrarr, result, result2, i As Long, j As Long, n As Long
arrstr = createstr(vari1): arrarr = createstr(createarr(vari2, 3))
ReDim result(1 To UBound(arrstr), 1 To 1), result2(1 To UBound(arrstr), 1 To 1)
For i = 1 To UBound(result)
    result(i, 1) = arrstr(i, 1) & arrarr(i, 1)
Next i
For i = 1 To UBound(result)
    n = 0
    For j = 1 To UBound(result)
        If result(j, 1) > result(i, 1) Then n = n + 1
    Next j
    result2(i, 1) = n + 1
Next i
rankk = result2
End Function
 

File đính kèm

Web KT

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

Back
Top Bottom