|
|
Sub SortDataAndDisplay()
Dim ws As Worksheet
Dim lastRow As Long
Dim dataRange As Range
Dim outputRange As Range
' 设置工作表
Set ws = ThisWorkbook.Worksheets("Sheet1")
' 获取数据最后一行
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 检查是否有数据
If lastRow < 2 Then
MsgBox "没有找到数据!"
Exit Sub
End If
' 设置数据范围(A:D列)
Set dataRange = ws.Range("A2:D" & lastRow)
' 设置输出范围(从F2开始)
Set outputRange = ws.Range("F2")
' 清空之前的输出结果(F:I列)
ws.Range("F:I").ClearContents
' 复制数据到输出区域
dataRange.Copy outputRange
' 获取新的数据范围(F:I列)
Dim newLastRow As Long
newLastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row
Dim sortRange As Range
Set sortRange = ws.Range("F2:I" & newLastRow)
' 执行排序(按大队升序,再按中队升序)
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=sortRange.Columns(1), Order:=xlAscending ' 大队
.SortFields.Add Key:=sortRange.Columns(2), Order:=xlAscending ' 中队
.SetRange sortRange
.Header = xlNo
.Apply
End With
' 添加表头
ws.Range("F1:I1").Value = Array("大队", "中队", "姓名", "身份证号")
' 自动调整列宽
ws.Columns("F:I").AutoFit
MsgBox "数据排序完成!结果显示在F:I列。"
End Sub |
|