【发布时间】:2023-03-07 04:13:01
【问题描述】:
我有Table3的范围如下图:
这些行不是固定的,可能会增加或减少,因此我将其创建为表 Table3 以适应这种行为,并且我可以在 VBA 中将其用作 ListObjects。
下面的 VBA 用于对表格进行排序,但是由于 Totals 是范围的一部分,因此排序无法按预期工作。
在应用排序之前,有人可以帮助修改代码以忽略Totals 行(即仅包括header 以下和Totals 行以上的范围)
编辑
目前,这是我尝试重新定义没有最后一行的新范围
子排序() Dim resizedTable As ListObject 设置 resizedTable = Sheets("Sheet1").ListObjects("Table1") 使用 resizedTable .Resize .Range.Resize(.Range.Rows.Count - 1, .Range.Columns.Count) 结束于 resizedTable.sort.SortFields.Clear resizedTable.sort.SortFields _ .Add Key:=Range("resizedTable[Description]"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormal .Header = xl是 .MatchCase = 假 .Orientation = xlTopToBottom .SortMethod = xlPinYin 。申请 结束子任何帮助将不胜感激。
【问题讨论】:
-
只需将范围缩短一排,然后排序。使用 Range 对象的 Range 方法。
-
我会尝试使用具有内置总计的实际 Excel 表。然后记录一个进行排序的宏。
-
@DougGlancy 谢谢,但由于多种原因无法正常工作
-
但你的编辑说它是一个表/ListObject。
-
@DougGlancy - 我在 excel 中定义了一个表格范围,但另一个应用程序插入了表格数据和(子)总计,因此我取消选中插入小计的 Excel-Table 选项 - 就就 Excel 而言,该表没有(子)总计。
标签: vba excel excel-2010