Compartilhar via


Classificar dados programaticamente em planilhas

Você pode classificar dados contidos em intervalos de planilhas e listas em tempo de execução. O código a seguir classifica um intervalo de várias colunas nomeado Fruits pelos dados na primeira coluna e, em seguida, pelos dados na segunda coluna.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Excel. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Classificar dados em uma personalização em nível de documento

Para classificar dados em um controle NamedRange

  1. Chame NamedRange o Sort método do controle. O exemplo a seguir requer um NamedRange controle nomeado Fruits em uma planilha. Esse código deve ser colocado em uma classe de planilha, não na ThisWorkbook classe.

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

    Coloque o código a seguir em Sheet1.vb ou Sheet1.cs para classificar dados em um ListObject controle. O código pressupõe que você tenha um ListObject controle nomeado fruitList em uma planilha chamada Sheet1.

Para classificar dados em um controle ListObject

  1. Chame o Sort Range método da propriedade do controle host ListObject .

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

Classificar dados em um suplemento VSTO

Para classificar dados em um intervalo nativo

  1. Chame o Sort método do controle nativo do Excel Range . O exemplo a seguir requer um controle nativo do Excel nomeado Fruits em uma planilha.

    Excel.Range Fruits = Application.get_Range("A1", "B3");
        Fruits.Sort(
        Fruits.Columns[1], Excel.XlSortOrder.xlAscending,
        Fruits.Columns[2], 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);
    

Para classificar dados em um controle ListObject

  1. Chame o Sort Range método da propriedade do controle nativo do Excel ListObject . O exemplo a seguir pressupõe que você tenha um controle nativo do Excel ListObject nomeado fruitList na planilha ativa.

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