Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, Arr()
If Target.Column < 4 And Target.Count = 1 Then
Set rng = Cells(Target.Row, 1).Resize(1, 3)
If Application.Count(rng) = 3 Then
If Target.Column = 3 Then '增加一个条件:为方便修改数据,仅在C列发生改变时排序
Arr = rng.Value
Arr = Application.Transpose(Arr)
Arr = Application.Transpose(Arr)
Call SelectionSort(Arr)
rng = Arr
End If
End If
End If
End Sub
Sub SelectionSort(Arr)
Dim i&, j&, val, idx&
For i = LBound(Arr) To UBound(Arr) - 1
val = Arr(i): idx = i
For j = i + 1 To UBound(Arr)
If val > Arr(j) Then val = Arr(j): idx = j '升序
Next j
If idx <> i Then Arr(idx) = Arr(i): Arr(i) = val
Next i
End Sub
Book3b.rar
(11.34 KB, 下载次数: 8)