gpt4 book ai didi

vba - 在excel中对不同大小的表格进行排序

转载 作者:行者123 更新时间:2023-12-04 21:08:29 28 4
gpt4 key购买 nike

我要做的是在电子表格中选择一个表格,然后根据 2 个不同的列进行排序

我使用记录宏选项生成了此代码。表格的大小发生了变化,这就是我使用 xlDown 的原因,不幸的是,代码后来引用了确切的单元格“B4:B52”。知道如何解决这个问题吗?

Range("B4:J4").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range( _
"B4:B52"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range( _
"G4:G52"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("B4:J52")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

最佳答案

由于您正在排序 Table (ListObject 在 VBA 中),您需要引用它。这将动态调整以包含整个表格列。在此示例中,要排序的列标题/名称是“Data1”和“Data3”:

Sub SortTable()
Dim lo As Excel.ListObject

'change this assignment to suit your table location and name
Set lo = ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1")
With lo
.Sort.SortFields.Clear
.Sort.SortFields.Add _
Key:=Range("Table1[data1]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.SortFields.Add _
Key:=Range("Table1[data3]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub

关于vba - 在excel中对不同大小的表格进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20053802/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com