Como classificar números em estilo de lista no Excel?

Como classificar números em estilo de lista no Excel?

Tenho uma coluna de "números" no Excel que gostaria de ordenar da seguinte forma:

1.1
1.2
1.2.1
1.2.6
1.2.9
1.2.10
1.2.11
1.3

No entanto, independentemente de o tipo da célula ser número ou texto, o Excel os classifica da seguinte forma:

1.1
1.2
1.2.1
1.2.10
1.2.11
1.2.6
1.2.9
1.3

Isso também poderia ser chamado de "classificação natural" - em uma linguagem de programação como PHP, isso seria realizado pelonatsort função. Mas não consigo encontrar uma maneira de classificar dessa maneira no Excel.

Para ajudar a fornecer algum contexto: Esses números representam seções e subseções - não decimais, mas sim como itens de lista:

1. Section
    1. Sub-section
    2. Sub-section
        1.  Item
        6.  Item
        9.  Item
        10. Item
        11. Item
    3. Sub-section

Responder1

Você pode fazer uma tabela para dividir os valores:

Para cada coluna, use os títulos (linha 1) e fórmulas (linha 2+):

A1: text    A2: (your section numbers)
B1: dot1    B2: =FIND(".",A2,1)  
C1: dot2    C2: =IFERROR(FIND(".",A2,B2+1),LEN(A2)+1)  
D1: num1    D2: =VALUE(MID(A2,1,B2-1))  
E1: num2    E2: =IFERROR(VALUE(MID(A2,B2+1,C2-B2-1)),0)  
F1: num3    F2: =IFERROR(VALUE(MID(A2,C2+1,LEN(A2)-C2)),0)  

Isso aparece como:

      A      B      C      D      E      F

1   text   dot1   dot2   num1   num2   num3
2   1.1       2      4      1      1      0
3   1.1.3     2      4      1      1      3
4   2.10.7    2      5      2     10      7

Então você pode fazer uma classificação personalizada pelas colunas num1, num2 e num3.

Responder2

Tive bons resultados ao inserir uma função definida pelo usuário. A UDF retorna um valor que representa o total do número da seção em milhões, o número da subseção em milhares, o número do item em unidades, o subitem (se houver) em milésimos, os sub-subitens em milionésimos e assim por diante. Por exemplo,

1.2.3voltaria 1,002,003enquanto

1.51.5.5retorna 1,051,005.005- e esses números podem ser usados ​​para classificação.

Acho que isso é menos complicado do que usar funções de string na planilha ou classificar em várias colunas.

A UDF é a seguinte:

Function LList(stInVal As String) As Double

Dim iPower          As Integer
Dim vSplit          As Variant
Dim i               As Long

iPower = 6

vSplit = Split(stInVal, ".", -1)

For i = 0 To UBound(vSplit)
    LList = LList + CInt(vSplit(i)) * 10 ^ (iPower - 3 * i)
Next i

End Function

Responder3

Doug explica isso em detalhes. Eu espero que faça sentido!

http://youtu.be/74WdfqAB8mY

Responder4

Acabei de enfrentar o mesmo problema ...

se você deseja uma solução rápida (e não se preocupa com o uso de ".", basta encontrar todos os "." e substituir por "_" - isso permitirá que o Excel classifique em uma hierarquia.

a classificação quase funcionará .. agora tudo que você precisa fazer é adicionar um "sublinhado" aos seus dados ... para que os dados com um caractere "1" se tornem "1_" (para o número de caracteres em seus dados)

informação relacionada