ワークシートタブのアルファベット順(Microsoft Excel)
Patは、ワークブックのワークシートをアルファベット順に並べる簡単な方法があるかどうか疑問に思います。これを行うための組み込みメソッドはありませんが、マクロを使用して並べ替えを行うことは可能です。このヒントでは、2つのアプローチを紹介します。 1つ目は、並べ替えを行う簡単な方法を提供します。
Sub SortSheets1() Dim I As Integer Dim J As Integer For I = 1 To Sheets.Count - 1 For J = I + 1 To Sheets.Count If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then Sheets(J).Move Before:=Sheets(I) End If Next J Next I End Sub
このマクロは、ワークシートのタブを名前の昇順で並べ替えます。降順で並べ替える場合は、中心線の>を<に変更するだけです。
ブック内のワークシートの数が比較的少ない場合、マクロはうまく機能します。マクロを実行するときに、実行にかなりの時間がかかることに気付いた場合は、マクロでより効率的な並べ替えアルゴリズムを使用することをお勧めします。たとえば、以下は、すべてのワークシートの名前を配列に読み取り、BubbleSortアルゴリズムを使用して配列を並べ替えてから、実際の配置を行うバージョンです。
Sub SortSheets2() Dim I As Integer Dim sMySheets() As String Dim iNumSheets As Integer iNumSheets = Sheets.Count Redim sMySheets(1 To iNumSheets) For I = 1 To iNumSheets sMySheets(I) = Sheets(I).Name Next I BubbleSort sMySheets For I = 1 To iNumSheets Sheets(sMySheets(I)).Move Before:=Sheets(I) Next I End Sub
Sub BubbleSort(sToSort() As String) Dim Lower As Integer Dim Upper As Integer Dim I As Integer Dim J As Integer Dim K As Integer Dim Temp As String Lower = LBound(sToSort) Upper = UBound(sToSort) For I = Lower To Upper - 1 K = I For J = I + 1 To Upper If sToSort(K) > sToSort(J) Then K = J End If Next J If I <> K Then Temp = sToSort(I) sToSort(I) = sToSort(K) sToSort(K) = Temp End If Next I End Sub
しばらくの間プログラミングをしたことがある人なら誰でも、BubbleSortが優れた汎用ソートルーチンであることを知っていますが、より高速なものもあります。
たとえば、かなりの数のワークシートがあり、それらが非常にまとまりのないものから始まっている場合は、QuickSortアルゴリズムの方が有益であることがわかります。 QuickSortを使用するために上記を変更するために必要なのは、QuickSortアルゴリズムをサブルーチンとして追加し(アルゴリズムはVisual Basicプログラミングブックにあります)、メインのSortSheetsマクロ内からプロシージャを呼び出すことだけです。 (これは、BubbleSortが呼び出される行を変更することを意味します。)
この2番目のマクロと最初のマクロの間には別の違いがあります。最初のマクロは、ワークシートに名前を付けるために使用されるテキストの大文字と小文字を区別しません。したがって、MyWorksheetはMYWORKsheetと同じように表示されます。 2番目のマクロは大文字小文字に注意を払い、それに応じて並べ替えます。もちろん、Excelはワークシート名の大文字と小文字も区別しないため、これは特に大きな問題ではありません。
簡単なメモ:上記のBubbleSortルーチンは、本質的に汎用です。つまり、ワークシートタブの名前を並べ替えるだけでなく、任意の配列を並べ替えることができます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(13440)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。
Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: