Microsoft ExcelでVBAを使用して、ブック内のワークシートを並べ替える
この記事では、ワークシート名に応じて、ワークブック内のワークシートを昇順または降順で並べ替える方法について詳しく説明しました。
添付のワークブックには、次の2つのモジュールがあります。-Module1には、「マクロ」シートの「送信」ボタンに割り当てられたマクロ「SortWorksheets」が含まれています。
このマクロは、「マクロ」という名前のメインシートである最初のワークシートを除くすべてのワークシートを並べ替えます。
ユーザーが「送信」ボタンをクリックすると、「マクロ」シートの後のすべてのシートが、コンボボックスでユーザーが選択した昇順または降順で並べ替えられます。
Module2には、「AscendingSortOfWorksheets」と「DecendingSortOfWorksheets」の2つのマクロが含まれています。 「AscendingSortOfWorksheets」マクロを実行すると、ブックに存在するすべてのワークシートが昇順で並べ替えられます。 「DecendingSortOfWorksheets」マクロを実行すると、ブックに存在するすべてのワークシートが降順で並べ替えられます。
ロジックの説明
バブルソートアルゴリズムは、ワークブック内のワークシートをソートするために使用されます。
バブルソートアルゴリズムは、配列内の各アイテムを配列内の他のアイテムと比較し、昇順または降順のどちらでソートするかに応じてそれらを交換します。各ステップで、最小値または最大値を配列の先頭にバブルします。すべてのアイテムがソートされるまで、アルゴリズムが繰り返されます。
この記事では、ワークブック内のワークシートを名前で並べ替えることを目標としています。私たちが使用しているワークブックは、Financial Dashboard、Human Resources、SalesDashboardなどの名前のさまざまなワークシートで構成されています。
この目標を達成するために、ワークシートをソートするためにバブルソートアルゴリズムを使用しました。
コードの説明
SortWorksheetsマクロ
このマクロは、ユーザーが送信ボタンをクリックしたときに実行されます。このマクロは、ブック内の最初のワークシートを除く、ブック内のすべてのワークシートを名前で並べ替えます。コンボボックスでユーザーが選択した値に応じて、ワークシートが昇順または降順で並べ替えられます。
コンボボックスを追加するには、以下の手順に従ってください:-。 [開発者]タブに移動> [挿入]をクリック>フォームコントロールの下のコンボボックスアイコンをクリック
。コンボボックスを右クリックし、フォーマットコントロールをクリックします。
。 [コントロール]タブに移動し、アイテムを割り当てて、コンボボックスをセルXFC1にリンクします。
ComboBoxValue = Range( “XFC1″)。Value「マクロ」ワークシートのコンボボックスはセルXFC1にリンクされています。したがって、セルXFC1から値を取得するには、ComboBoxValue変数が使用されます。
For i = 2 To SCount – 1 FORループは変数iで始まり、ワークブックの最初のワークシートを並べ替えから除外するため、値は2から始まります。
If ComboBoxValue = 1次に、IF条件を使用して、昇順または降順のどちらでソートするかを確認します。 ComboBoxValue値が1の場合は昇順で並べ替え、それ以外の場合は降順で並べ替えます。
ワークシートを昇順で並べ替える
ワークシートは降順でソートされます
AscendingSortOfWorksheetsおよびDecendingSortOfWorksheets
AscendingSortOfWorksheetsおよびDecendingSortOfWorksheetsマクロは、Alt + F8ショートカットキーを押すか、[開発者]タブに移動> [マクロ]をクリック>マクロを選択して[実行]をクリックすることで実行できます。ブック内にあるすべてのワークシートを並べ替えます。これらのマクロは、他のブックでも実行できます。
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]までご連絡ください