方法 : プログラムを使用してワークシート内のデータを並べ替える

更新 : 2008 年 7 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Excel 2003

  • Excel 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

実行時にワークシート範囲およびリスト内にあるデータを並べ替えることができます。次のコードは、複数の列で構成される Fruits という名前の範囲を、最初の列のデータを基に並べ替え、次に 2 番目の列のデータを基に並べ替えます。

Visual Studio 2008 Service Pack 1 (SP1) では、実行時にアプリケーション レベルのアドインのデータを並べ替えることができるようになりました。

ドキュメント レベルのカスタマイズにおけるデータの並べ替え

NamedRange コントロール内のデータを並べ替えるには

  • NamedRange コントロールの Sort メソッドを呼び出します。次のコード例では、ワークシートに Fruits という名前の NamedRange コントロールが必要です。このコードは、ThisWorkbook クラスではなくシート クラスに配置する必要があります。

    Me.Fruits.Sort( _
        Key1:=Me.Fruits.Columns(1), Order1:=Excel.XlSortOrder.xlAscending, _
        Key2:=Me.Fruits.Columns(2), Order2:=Excel.XlSortOrder.xlAscending, _
        Orientation:=Excel.XlSortOrientation.xlSortColumns, _
        Header:=Excel.XlYesNoGuess.xlNo, _
        SortMethod:=Excel.XlSortMethod.xlPinYin, _
        DataOption1:=Excel.XlSortDataOption.xlSortNormal, _
        DataOption2:=Excel.XlSortDataOption.xlSortNormal, _
        DataOption3:=Excel.XlSortDataOption.xlSortNormal)
    
    this.Fruits.Sort(
        this.Fruits.Columns[1, missing], Excel.XlSortOrder.xlAscending,
        this.Fruits.Columns[2, missing], missing, Excel.XlSortOrder.xlAscending,
        missing, Excel.XlSortOrder.xlAscending,
        Excel.XlYesNoGuess.xlNo, missing, missing, 
        Excel.XlSortOrientation.xlSortColumns,
        Excel.XlSortMethod.xlPinYin,
        Excel.XlSortDataOption.xlSortNormal,
        Excel.XlSortDataOption.xlSortNormal,
        Excel.XlSortDataOption.xlSortNormal); 
    

次のコードを Sheet1.vb または Sheet1.cs に配置して、ListObject コントロール内のデータを並べ替えます。次のコードでは、Sheet1 という名前のワークシートに、fruitList という名前の Microsoft.Office.Tools.Excel.ListObject コントロールがあることを前提としています。

ListObject コントロール内のデータを並べ替えるには

  • ListObject ホスト コントロールの Range プロパティの Sort メソッドを呼び出します。

    Me.fruitList.Range.Sort( _
        Key1:=Me.fruitList.ListColumns(1).Range, Order1:=Excel.XlSortOrder.xlAscending, _
        Key2:=Me.fruitList.ListColumns(2).Range, Order2:=Excel.XlSortOrder.xlAscending, _
        Orientation:=Excel.XlSortOrientation.xlSortColumns, _
        Header:=Excel.XlYesNoGuess.xlYes)
    
    this.fruitList.Range.Sort(
        this.fruitList.ListColumns[1].Range, Excel.XlSortOrder.xlAscending,
        this.fruitList.ListColumns[2].Range, missing, Excel.XlSortOrder.xlAscending,
        missing, Excel.XlSortOrder.xlAscending, 
        Excel.XlYesNoGuess.xlYes, missing, missing, 
        Excel.XlSortOrientation.xlSortColumns,
        Excel.XlSortMethod.xlPinYin, 
        Excel.XlSortDataOption.xlSortNormal,
        Excel.XlSortDataOption.xlSortNormal,
        Excel.XlSortDataOption.xlSortNormal);
    

アプリケーション レベルのアドインのデータの並べ替え

ネイティブな範囲でデータを並べ替えるには

  • ネイティブな Excel Microsoft.Office.Interop.Excel.Range コントロールの Sort メソッドを呼び出します。次のコード例では、ワークシートに Fruits という名前のネイティブな Excel コントロールが必要です。

    Dim Fruits As Excel.Range = Me.Application.Range("A1", "B2")
    Fruits.Sort( _
        Key1:=Fruits.Columns(1), Order1:=Excel.XlSortOrder.xlAscending, _
        Key2:=Fruits.Columns(2), Order2:=Excel.XlSortOrder.xlAscending, _
        Orientation:=Excel.XlSortOrientation.xlSortColumns, _
        Header:=Excel.XlYesNoGuess.xlNo, _
        SortMethod:=Excel.XlSortMethod.xlPinYin, _
        DataOption1:=Excel.XlSortDataOption.xlSortNormal, _
        DataOption2:=Excel.XlSortDataOption.xlSortNormal, _
        DataOption3:=Excel.XlSortDataOption.xlSortNormal)
    
    Excel.Range Fruits = Application.get_Range("A1", "B3");
        Fruits.Sort(
        Fruits.Columns[1, missing], Excel.XlSortOrder.xlAscending,
        Fruits.Columns[2, missing], missing, Excel.XlSortOrder.xlAscending,
        missing, Excel.XlSortOrder.xlAscending,
        Excel.XlYesNoGuess.xlNo, missing, missing,
        Excel.XlSortOrientation.xlSortColumns,
        Excel.XlSortMethod.xlPinYin,
        Excel.XlSortDataOption.xlSortNormal,
        Excel.XlSortDataOption.xlSortNormal,
        Excel.XlSortDataOption.xlSortNormal); 
    

ListObject コントロール内のデータを並べ替えるには

  • ネイティブな Excel Microsoft.Office.Interop.Excel.ListObject コントロールの Range プロパティの Sort メソッドを呼び出します。次の例は、アクティブなワークシートに fruitList という名前のネイティブな Excel Microsoft.Office.Interop.Excel.ListObject コントロールがあることを前提としています。

    Dim fruitList As Excel.ListObject = CType(Application.ActiveSheet,  _
        Excel.Worksheet).ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, _
        Application.Range("A1", "B2"))
    fruitList.Range.Sort( _
    Key1:=fruitList.ListColumns(1).Range, Order1:=Excel.XlSortOrder.xlAscending, _
    Key2:=fruitList.ListColumns(2).Range, Order2:=Excel.XlSortOrder.xlAscending, _
    Orientation:=Excel.XlSortOrientation.xlSortColumns, _
    Header:=Excel.XlYesNoGuess.xlYes)
    
    Excel.ListObject fruitList = 
         ((Excel.Worksheet)Application.ActiveSheet).
             ListObjects.Add(Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange,
             Application.get_Range("A1", "B3"), 
             missing, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlNo, missing); 
        fruitList.Range.Sort(
            fruitList.ListColumns[1].Range, Excel.XlSortOrder.xlAscending,
            fruitList.ListColumns[2].Range, missing, Excel.XlSortOrder.xlAscending,
            missing, Excel.XlSortOrder.xlAscending,
            Excel.XlYesNoGuess.xlYes, missing, missing,
            Excel.XlSortOrientation.xlSortColumns,
            Excel.XlSortMethod.xlPinYin,
            Excel.XlSortDataOption.xlSortNormal,
            Excel.XlSortDataOption.xlSortNormal,
            Excel.XlSortDataOption.xlSortNormal);
    

参照

処理手順

方法 : 増分するデータを範囲内に自動的に入力する

方法 : コード内でワークシートの範囲を参照する

方法 : ブック内の範囲にスタイルを適用する

概念

ワークシートの操作

NamedRange コントロール

ListObject コントロール

Office ソリューションの省略可能なパラメータについて

履歴の変更

日付

履歴

理由

2008 年 7 月

アプリケーション レベルのアドインで使用できるコード例を追加

カスタマ フィードバック