_ExcelTips_的其他问题提供了一些方法,可以根据工作表名称对工作簿中的工作表进行排序。但是,如果要基于每个工作表的给定单元格中的值对工作表进行排序怎么办?例如,您可能有一系列共享相同总体布局的工作表,并且希望基于每个工作表的单元格H7中的值对工作表进行排序。

处理此问题的唯一方法是使用宏。宏需要逐步浏览工作簿中的每个工作表,然后检查每个后续工作表中的关键单元格以查看其与其他工作表中相同单元格的比较。如果单元格值小于当前工作表,则可以移动包含较小值的工作表。

Sub SortWksByCell()

Dim i As Integer     Dim j As Integer

For i = 1 To Worksheets.Count         For j = i To Worksheets.Count             If UCase(Worksheets(j).Range("H7")) < _               UCase(Worksheets(i).Range("H7")) Then                 Worksheets(j).Move Before:=Worksheets(i)

End If         Next     Next End Sub

请注意使用Move方法,该方法可以进行工作表的实际移动。工作表的名称无关紧要,仅取决于它们在每个工作表单元格H7中的值的位置。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12448)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Ordering_Worksheets_Based_on_a_Cell_Value [基于单元格值订购工作表]。