使用vba代码基于同一列对多个表进行sorting

我需要vba代码来帮助我sorting在同一张表中的多个表,而不合并到一个表中。 我有一个范围的数据,从B14:V18,另一个从B21:V39,另一个从B42:V108。 我需要根据列L中的值对数据进行sorting。但是,它需要是dynamic的,因为每个表中的行数在任何一天都可能会改变。 在Excel中使用正常的sortingfunction只是将所有的数据合并到一个表中,而不是保持它们的独立性。

列总是B:V,但是行将会改变。 同样,下一个表格总是位于前一个单元格的最后一个单元格的下面3行。

我意识到这个线程已经死了,但是想要为OP的问题提供一个可能的解决scheme。 我使用了Doug的macros,遇到了OP所做的同样的问题。 我只是在.SortFields.Add行之前添加.SortFields.Clear ,然后导致macros正常运行。 看到我的post在这里为我的代码使用两个sorting标准。

 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”的列对活动工作表上的所有表进行sorting。 它应该工作,无论表格位于表单上:

 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中testing