|
排序是默认用宏录制做的 自定义排序
后半段是合并单元格
做得比较粗糙。大部分是录制宏的代码。
- Sub 排序()
- Application.DisplayAlerts = False
- arr = Sheets(1).Range("A1:C" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value
- Sheets(1).Range("G1:I" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row) = arr
- Worksheets("Sheet1").Sort.SortFields.Clear
- Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("G2:G" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
- Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("I2:I" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
- With ActiveWorkbook.Worksheets("Sheet1").Sort
- .SetRange Range("G1:I" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row)
- .Header = xlYes
- .MatchCase = False
- .Orientation = xlTopToBottom
- .SortMethod = xlPinYin
- .Apply
- End With
- arr = Sheets(1).Range("G1:I" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value
- j = 2
- For i = 3 To UBound(arr)
- If arr(i - 1, 1) <> arr(i, 1) Then
- Range("G" & i - 1 & ":G" & j).Merge
- Range("H" & i - 1 & ":H" & j).Merge
- j = i
- End If
- Next i
- Range("G" & i - 1 & ":G" & j).Merge
- Range("H" & i - 1 & ":H" & j).Merge
- Columns("G:H").Select
- With Selection
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlCenter
- End With
- Application.DisplayAlerts = True
- End Sub
复制代码
|
|