我的范围Table3
如下所示:
这些行不是固定的,可以增加或减少,因此我已将其创建为表Table3
以适应此行为,因此我可以在VBA中将其用作ListObjects
。< / p>
下面的VBA用于对表进行排序,但由于Totals
是范围的一部分,因此排序无法按预期工作。
Sub sort() ActiveWorkbook.Worksheets("Project 2013").ListObjects("Table3").sort.SortFields _ .Clear ActiveWorkbook.Worksheets("Project 2013").ListObjects("Table3").sort.SortFields _ .Add Key:=Range("Table3[Description3]"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Project 2013").ListObjects("Table3").sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
在应用排序之前,有人可以帮助修改代码以忽略Totals
行(即仅包括header
下方和Totals
行之上的范围)
修改
目前,这是我尝试重新定义没有最后一行的新范围
Sub sort() Dim resizedTable As ListObject Set resizedTable = Sheets("Sheet1").ListObjects("Table1") With resizedTable .Resize .Range.Resize(.Range.Rows.Count - 1, .Range.Columns.Count) End With resizedTable.sort.SortFields.Clear resizedTable.sort.SortFields _ .Add Key:=Range("resizedTable[Description]"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormal .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End Sub
任何帮助将不胜感激。
答案 0 :(得分:1)
为您的表格设置一个新范围,只需缩短一行»totalRowCount - 1
在这里,x
是您的输入范围
Set x = Range(x.Cells(1, 1), x.Cells(x.Rows.Count - 1, x.Columns.Count))
或使用调整大小方法
Sub CutOffLastLine()
With ActiveWorkbook.Worksheets("Project 2013").ListObjects("Table3")
.Resize .Range.Resize(.Range.Rows.Count - 1, .Range.Columns.Count)
End With
End Sub