Sub test() Dim i As Long Dim j As Long Dim n As Integer Dim Lrow As Long Dim Arr1, Arr2(), temp With Sheets("原始数据") Lrow = .[A65536].End(xlUp).Row Arr1 = .Range("A1:D" & Lrow) End With For i = 2 To Lrow For j = 2 To Lrow If Arr1(i, 4) > Arr1(j, 4) Then temp = Application.Index(Arr1, i) For n = 1 To 4 Arr1(i, n) = Arr1(j, n) Arr1(j, n) = temp(n) Next End If Next Next ReDim Arr2(1 To Lrow) Arr2(1) = "名次" For i = 2 To Lrow If Arr1(i, 4) = Arr1(i - 1, 4) Then Arr2(i) = Arr2(i - 1) Else Arr2(i) = i - 1 End If Next With Sheets("排名表") .Cells.Delete .[A1].Resize(Lrow, 1) = Application.Transpose(Arr2) .[B1].Resize(Lrow, 4) = Arr1 .[A1].Resize(Lrow, 5).Borders.LineStyle = xlContinuous End With End Sub
Sub test() Dim i As Long Dim j As Long Dim n As Integer Dim Lrow As Long Dim Arr1, Arr2(), temp With Sheets("原始数据") Lrow = .[A65536].End(xlUp).Row Arr1 = .Range("A1:D" & Lrow) End With For i = 2 To Lrow For j = 2 To Lrow If Arr1(i, 4) > Arr1(j, 4) Then temp = Application.Index(Arr1, i) For n = 1 To 4 Arr1(i, n) = Arr1(j, n) Arr1(j, n) = temp(n) Next End If Next Next ReDim Arr2(1 To Lrow) Arr2(1) = "名次" For i = 2 To Lrow If Arr1(i, 4) = Arr1(i - 1, 4) Then Arr2(i) = Arr2(i - 1) Else Arr2(i) = i - 1 End If Next With Sheets("排名表") .Cells.Delete .[A1].Resize(Lrow, 1) = Application.Transpose(Arr2) .[B1].Resize(Lrow, 4) = Arr1 .[A1].Resize(Lrow, 5).Borders.LineStyle = xlContinuous End With End Sub