我需要 vba 代码来帮助我对同一张表中的多个表进行排序,而无需将它们合并到一个表中。我有一系列数据,来自 B14:V18,另一个来自 B21:V39,另一个来自 B42:V108。我需要根据 L 列中的值对数据进行排序。但是,它需要是动态的,因为每个表中的行数在任何一天都可能发生变化。在 excel 中使用正常的排序功能只是将所有数据合并到一个表中,而不是将它们分开。
列将始终为 B:V,但行将发生变化。同样,下一个表格将始终位于上一个表格的最后一个单元格下方 3 行。
我意识到这个线程已经死了,但想为 OP 的问题提供一个可能的解决方案。我使用了 Doug 的宏并遇到了与 OP 相同的问题。我只是.SortFields.Clear
在该.SortFields.Add
行之前添加,然后导致宏正确运行。请参阅我的帖子,了解我使用两个排序标准的代码。
Sub SortTables()
Dim lo As Excel.ListObject
Dim ws As Excel.Worksheet
Set ws = ActiveSheet
For Each lo In ws.ListObjects
With lo.Sort
.SortFields.Clear
.SortFields.Add Key:=lo.ListColumns("test2").Range, Order:=xlAscending
.Header = xlYes
.Apply
End With
Next lo
End Sub
这将按名为“test3”的列对活动工作表上的所有表进行排序。无论表格如何位于工作表上,它都应该起作用:
Sub SortTables()
Dim lo As Excel.ListObject
Dim ws As Excel.Worksheet
Set ws = ActiveSheet
For Each lo In ws.ListObjects
With lo.Sort
.SortFields.Add Key:=lo.ListColumns("test2").Range, Order:=xlAscending
.Header = xlYes
.Apply
End With
Next lo
End Sub
在 Excel 2010 中测试