0

我需要 vba 代码来帮助我对同一张表中的多个表进行排序,而无需将它们合并到一个表中。我有一系列数据,来自 B14:V18,另一个来自 B21:V39,另一个来自 B42:V108。我需要根据 L 列中的值对数据进行排序。但是,它需要是动态的,因为每个表中的行数在任何一天都可能发生变化。在 excel 中使用正常的排序功能只是将所有数据合并到一个表中,而不是将它们分开。

列将始终为 B:V,但行将发生变化。同样,下一个表格将始终位于上一个表格的最后一个单元格下方 3 行。

4

2 回答 2

2

我意识到这个线程已经死了,但想为 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
于 2014-11-12T06:54:53.983 回答
1

这将按名为“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 中测试

于 2013-05-30T14:02:53.167 回答