排序在Excel中使用VBA的工作簿的工作表
在本文中,我们提供了有关如何根据工作表名称以升序或降序对工作簿中的工作表进行排序的详细信息。
在所附的工作簿中,有两个模块:-Module1包含宏“ SortWorksheets”,该宏被分配给“宏”表上的“提交”按钮。
此宏对除第一个工作表(主表名为“宏”)以外的所有工作表进行排序。
当用户单击“提交”按钮时,“宏”表之后的所有表将按照用户在组合框中选择的升序或降序排序。
Module2包含两个宏“ AscendingSortOfWorksheets”和“ DecendingSortOfWorksheets”。运行“ AscendingSortOfWorksheets”宏时,它将按升序对工作簿中存在的所有工作表进行排序。运行“ DecendingSortOfWorksheets”宏时,它将按降序对工作簿中存在的所有工作表进行排序。
逻辑解释
冒泡排序算法用于对工作簿中的工作表进行排序。
冒泡排序算法会将数组中的每个项目与数组中的其他项目进行比较,并根据是以升序还是降序对它们进行交换。在每个步骤中,它将使最小或最大值冒泡到数组顶部。重复算法直到对所有项目进行排序。
在本文中,我们的目标是按工作簿中的工作表的名称对其进行排序。我们正在使用的工作簿由名称不同的工作表组成,这些工作表的名称包括Financial Dashboard,Human Resources和Sales Dashboard。
为了实现此目标,我们使用Bubble排序算法对工作表进行排序。
代码说明
SortWorksheets宏
当用户单击提交按钮时,此宏将运行。此宏将按其名称对工作簿中的所有工作表进行排序,但工作簿中的第一个工作表除外。根据用户在组合框中选择的值,它将按升序或降序对工作表进行排序。
要添加组合框,请执行以下步骤:-。转到“开发人员”选项卡>单击“插入”>单击表单控件下的组合框图标
。右键单击组合框,然后单击格式控件。
。转到控制选项卡,分配项目并将组合框与单元格XFC1链接。
ComboBoxValue = Range(“ XFC1”)。Value“宏”工作表上的组合框与单元格XFC1链接。因此,为了从单元格XFC1获取值,使用了ComboBoxValue变量。
对于i = 2 To SCount – 1 FOR循环从变量i开始,值从2开始,因为我们要排除工作簿的第一个工作表。
如果ComboBoxValue = 1,则将IF条件用于检查是以升序还是降序排序。如果ComboBoxValue值为1,则按升序排序,否则按降序排序。
工作表按升序排序
工作表按降序排列
AscendingSortOfWorksheets和DecendingSortOfWorksheets
可以通过按Alt + F8快捷键或转到“开发人员”选项卡>单击“宏”>选择宏并单击运行来运行AscendingSortOfWorksheets和DecendingSortOfWorksheets宏。他们将对工作簿中存在的所有工作表进行排序。这些宏也可以在其他工作簿上运行。
运行AscendingSortOfWorksheets宏
后对工作表进行排序
工作表按升序排序DecendingSortOfWorksheets宏
请遵循以下代码
Sub AscendingSortOfWorksheets() 'Sort worksheets in a workbook in ascending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name < Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub Sub DecendingSortOfWorksheets() 'Sort worksheets in a workbook in descending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name > Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub
如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。
我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]