Condividi tramite


Procedura: ordinare dati nei fogli di lavoro a livello di codice

Aggiornamento: Luglio 2008

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Tipo di progetto

  • Progetti a livello di documento

  • Progetti a livello di applicazione

Versione Microsoft Office

  • Excel 2003

  • Excel 2007

Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazione.

È possibile ordinare i dati contenuti negli intervalli e negli elenchi dei fogli di lavoro in fase di esecuzione. Il codice seguente consente di ordinare un intervallo a più colonne denominato Fruits in base ai dati della prima colonna e quindi ai dati della seconda colonna.

A partire da Visual Studio 2008 Service Pack 1 (SP1) è possibile ordinare i dati in fase di esecuzione nei componenti aggiuntivi a livello di applicazione.

Ordinamento dei dati in una personalizzazione a livello di documento

Per ordinare dati in un controllo NamedRange

  • Chiamare il metodo Sort del controllo NamedRange. Nell'esempio seguente viene richiesto un controllo NamedRange denominato Fruits in un foglio di lavoro. Il codice deve essere inserito in una classe Sheet e non nella classe 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); 
    

Inserire il codice seguente in Sheet1.vb o Sheet1.cs per ordinare i dati in un controllo ListObject. Nel codice si presuppone la presenza di un controllo Microsoft.Office.Tools.Excel.ListObject denominato fruitList in un foglio di lavoro denominato Sheet1.

Per ordinare dati in un controllo ListObject

  • Chiamare il metodo Sort della proprietà Range del controllo host ListObject.

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

Ordinamento dei dati in un componente aggiuntivo a livello di applicazione

Per ordinare dati in un intervallo nativo

  • Chiamare il metodo Sort del controllo Microsoft.Office.Interop.Excel.Range nativo di Excel. Nell'esempio seguente viene richiesto un controllo nativo di Excel denominato Fruits in un foglio di lavoro.

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

Per ordinare dati in un controllo ListObject

  • Chiamare il metodo Sort della proprietà Range del controllo Microsoft.Office.Interop.Excel.ListObject nativo di Excel. Nell'esempio seguente si presuppone che nel foglio di lavoro attivo sia disponibile un controllo Microsoft.Office.Interop.Excel.ListObject nativo di Excel denominato fruitList.

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

Vedere anche

Attività

Procedura: riempire automaticamente gli intervalli con dati modificati in modo incrementale

Procedura: fare riferimento agli intervalli dei fogli di lavoro nel codice

Procedura: applicare stili agli intervalli nei fogli di lavoro

Concetti

Utilizzo dei fogli di lavoro

Controllo NamedRange

Controllo ListObject

Informazioni sui parametri facoltativi nelle soluzioni Office

Cronologia delle modifiche

Date

History

Motivo

Luglio 2008

Aggiunto un esempio di codice utilizzabile in un componente aggiuntivo a livello di applicazione.

Commenti e suggerimenti dei clienti.