我正在使用宏对具有多个表的Word文件中的表进行排序,它的工作原理很好,但也可悲地对总行进行了排序,所有表的行数都不同,排序前后的表分别是:
表格示例预排序:
后排序:
宏为:(为此,感谢@scenography)
Dim mytable As Table
For Each mytable In ActiveDocument.Tables
mytable.Sort ExcludeHeader:=True, FieldNumber:="Column 2", _
SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderDescending
Next
任何实现此目的的方法?
编辑:
是否可以避免此行的最后一行(总计)?例如:
Dim last_row As Long last_row = Cells.Find(What:="*", SearchDirection:=xlPrevious).Row )
或
lLastRow = rng(rng.Rows.Count, 1).Row
有可能删除最后一列(Cum),因为对此值进行排序时不正确。
这里有一个带有Word文档的链接,其中包含我的表格示例以复制结果
https://drive.google.com/file/d/1KpV11dHjON_gFnlAvlegzc3pWVfYipV4/view?usp=sharing
答案 0 :(得分:0)
很遗憾,您不能从Sort
中排除“最后一行”,但是,如果它始终是“总行”,则此解决方法将起作用。
For i = 1 To ActiveDocument.Tables.Count
Set mytable = ActiveDocument.Tables(i)
mytable.Rows(mytable.Rows.Count).Delete
mytable.Sort ExcludeHeader:=True, FieldNumber:="Column 2", _
SortFieldType:=wdSortFieldNumeric, SortOrder:=wdSortOrderDescending
mytable.Rows(2).Range.Copy
mytable.Rows.Add
mytable.Rows(mytable.Rows.Count).Range.Paste
mytable.Rows(2).Delete
mytable.Cell(1, mytable.Columns.Count).Select
Selection.SelectColumn
Selection.Cells.Delete ShiftCells:=wdDeleteCellsShiftLeft
Next
基本上,我们将排序后的第二行移到最后一行。