code về thứ hạng (rank) của 1 dòng với số cột không cố định (1 người xem)

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

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

heaed

Thành viên mới
Tham gia
25/8/17
Bài viết
3
Được thích
0
Giới tính
Nam
mình có một câu hỏi như thế này, mình muốn đánh số thứ hạng của từng đối tượng với số lượng tương ứng (đối tượng có số lượng cao nhất xếp thứ 1) vào các ô dòng 4, nó tương tự với hàm rank ấy
tuy nhiên thì số lượng cột (số lượng đối tượng) là không cố định mà có thể thêm bớt
các bạn có thể giúp mình viết code vba giải quyết vấn đề này được không, do yêu cầu đề bài nên mình không thể thay đổi cấu trúc bảng này lại được
mình xin cảm ơn
Capture.PNG
 

File đính kèm

Nếu công thức thì cứ dùng RANK thôi. Vd. nếu dữ liệu có thể tới cột Z nhưng không bao giờ vượt quá cột Z thì chọn B4:Z4 và công thức
Mã:
=RANK(B3:Z3;B3:Z3)
kết thúc bằng Ctrl+Shift+Enter.

Đừng nhìn vào #N/A thôi. Khi thêm / bớt dữ liệu trong dòng 3 thì kết quả sẽ dãn ra / co lại. Thế thôi.
 
Upvote 0
Nếu công thức thì cứ dùng RANK thôi. Vd. nếu dữ liệu có thể tới cột Z nhưng không bao giờ vượt quá cột Z thì chọn B4:Z4 và công thức
Mã:
=RANK(B3:Z3;B3:Z3)
kết thúc bằng Ctrl+Shift+Enter.

Đừng nhìn vào #N/A thôi. Khi thêm / bớt dữ liệu trong dòng 3 thì kết quả sẽ dãn ra / co lại. Thế thôi.
Nhưng cơ bản là mình muốn viết sang dạn vba
 
Upvote 0
Nhưng cơ bản là mình muốn viết sang dạn vba
VBA thì cũng dùng hàm Rank() sẵn có của Excel cho nhanh thôi.
PHP:
Public Sub GPE()
Dim Rng As Range, Cll As Range, Arr(), Col As Long
Set Rng = Range("B2", Range("B2").End(xlToRight)).Offset(1)
ReDim Arr(1 To 1, 1 To Rng.Columns.Count)
For Each Cll In Rng
    Col = Col + 1
    If Cll <> Space(0) Then
        If IsNumeric(Cll.Value) Then Arr(1, Col) = Application.WorksheetFunction.Rank(Cll, Rng, 0)
    End If
Next
Range("B4").Resize(, Col) = Arr
Set Rng = Nothing
End Sub
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom