Sdílet prostřednictvím


Gewusst wie: Programmgesteuertes Sortieren von Daten in Arbeitsblättern

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Visual Studio Tools for Office-Projekte und Versionen von Microsoft Office.

Projekttyp

  • Projekte auf Dokumentebene

  • Projekte auf Anwendungsebene

Microsoft Office-Version

  • Excel 2003

  • Excel 2007

Weitere Informationen finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Sie können die Daten in den Bereichen und Listen des Arbeitsblatts zur Laufzeit sortieren. Der folgende Code sortiert einen mehrspaltigen Bereich mit dem Namen Fruits zunächst nach den Daten der ersten Spalte und dann nach den Daten der zweiten Spalte.

Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie Daten zur Laufzeit in Add-Ins auf Anwendungsebene sortieren.

Sortieren von Daten in Anpassungen auf Dokumentebene

So sortieren Sie Daten in einem NamedRange-Steuerelement

  • Rufen Sie die Sort-Methode des NamedRange-Steuerelements auf. Das folgende Beispiel setzt voraus, dass sich ein NamedRange-Steuerelement mit dem Namen Fruits in einem Arbeitsblatt befindet. Dieser Code muss in eine Sheet-Klasse, nicht in die ThisWorkbook-Klasse, eingefügt werden.

    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); 
    

Fügen Sie den folgenden Code in Sheet1.vb oder Sheet1.cs ein, um Daten in einem ListObject-Steuerelement zu sortieren. Im Code wird davon ausgegangen, dass ein Microsoft.Office.Tools.Excel.ListObject-Steuerelement mit dem Namen fruitList in einem Arbeitsblatt mit dem Namen Sheet1 vorhanden ist.

So sortieren Sie Daten in einem ListObject-Steuerelement

  • Rufen Sie die Sort-Methode der Range-Eigenschaft des ListObject-Hoststeuerelements auf.

    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);
    

Sortieren von Daten in einem Add-In auf Anwendungsebene

So sortieren Sie Daten in einem systemeigenen Bereich

  • Rufen Sie die Sort-Methode des systemeigenen Excel-Microsoft.Office.Interop.Excel.Range-Steuerelements auf. Für das folgende Beispiel ist ein systemeigenes Excel-Steuerelement mit dem Namen Fruits auf einem Arbeitsblatt erforderlich.

    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); 
    

So sortieren Sie Daten in einem ListObject-Steuerelement

  • Rufen Sie die Sort-Method der Range-Eigenschaft des systemeigenen Excel-Microsoft.Office.Interop.Excel.ListObject-Steuerelements auf. Im folgenden Beispiel wird davon ausgegangen, dass sich ein systemeigenes Excel-Microsoft.Office.Interop.Excel.ListObject-Steuerelement mit dem Namen fruitList auf dem aktiven Arbeitsblatt befindet.

    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);
    

Siehe auch

Aufgaben

Gewusst wie: Automatisches Füllen von Bereichen mit inkrementellen Daten

Gewusst wie: Verweisen auf Arbeitsblattbereiche im Code

Gewusst wie: Anwenden von Formaten für Bereiche in Arbeitsmappen

Konzepte

Arbeiten mit Arbeitsblättern

NamedRange-Steuerelement

ListObject-Steuerelement

Optionale Parametern in Office-Projektmappen

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Codebeispiel hinzugefügt, das in einem Add-In auf Anwendungsebene verwendet werden kann.

Kundenfeedback.