色による並べ替え(Microsoft Excel)
Excelでは、ワークシートのデータを任意の数の属性で並べ替えることができます。ただし、本質的に並べ替えることができないものの1つは、セルの色です。少なくともExcel2007以降に更新しない限りはそうではありません。一部のアプリケーションでは、これは非常に便利な機能です。
次のマクロSortByColorは、セルのフォーマットに使用される色に基づいてテーブルを並べ替えます。
Sub SortByColor() On Error GoTo SortByColor_Err Dim sRangeAddress As String Dim sStartCell As String Dim sEndCell As String Dim rngSort As Range Dim rng As Range Application.ScreenUpdating = False sStartCell = InputBox("Enter the cell address of the " & _ "top cell in the range to be sorted by color" & _ Chr(13) & "i.e. 'A1'", "Enter Cell Address") If sStartCell > "" Then sEndCell = Range(sStartCell).End(xlDown).Address Range(sStartCell).EntireColumn.Insert Set rngSort = Range(sStartCell, sEndCell) For Each rng In rngSort rng.Value = rng.Offset(0, 1).Interior.ColorIndex Next Range(sStartCell).Sort Key1:=Range(sStartCell), _ Order1:=xlAscending, Header:=xlNo, _ Orientation:=xlTopToBottom Range(sStartCell).EntireColumn.Delete End If SortByColor_Exit: Application.ScreenUpdating = True Set rngSort = Nothing Exit Sub SortByColor_Err: MsgBox Err.Number & ": " & Err.Description, _ vbOKOnly, "SortByColor" Resume SortByColor_Exit End Sub
マクロは、最初に、並べ替える範囲の最初のセルを尋ねることによって機能します。これは、範囲の最上位のセルである必要があります。次に、マクロは、色の値を格納できる列を(一時的に)挿入します。次に、指定した開始セルで定義された範囲内の各セルをステップスルーします。
SortByColorは、データテーブルにヘッダー行がないことを前提としています。含まれている場合は、実際の並べ替えコマンドを変更する必要があります。 Header:= xlNoをHeader:= xlYesに変更するだけです。
SortByColorマクロは、セルに適用された明示的な色に基づいてセルを並べ替えるだけであり、セルの色が条件付き書式の結果である場合は並べ替えないことに注意してください。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3122)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkSorting byColors。