Existe uma maneira de classificar dígitos dentro de uma célula?

1

Gostaria de saber se há uma função do Excel ou uma fórmula que pode ser usada para classificar dígitos em uma célula.

Por exemplo, se o valor de A1 for 6193254807 e B1 tiver nossa fórmula com parâmetros definidos para classificação crescente, B1 deverá ser igual a 0123456789 (incluindo zero). É claro que, se os parâmetros foram definidos de modo a classificar em ordem decrescente, então B1 deve ser igual a 9876543210 .

Existe uma maneira de fazer isso, sem vagar pelo VBScript, ou macros, ou algo similarmente exótico?

    
por Iszi 06.07.2012 / 08:16

1 resposta

1

Isso é possível com uma fórmula de matriz. Supondo que o número original esteja em A1 , digite qualquer um dos ff. em uma célula em branco e confirme com Ctrl + Deslocamento + Enter :

Crescente:

=REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,"")))&
 SUM(POWER(10,ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))-1)*
     LARGE(INT(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),
            ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))))

Descendente:

=SUM(POWER(10,ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))-1)*
     SMALL(INT(MID(SUBSTITUTE(A1,0,""),ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,"")))),1)),
           ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))))
 &REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,"")))

Exemplo:

Cadafórmularecebeonthmaioroumenornúmeronacélulaemultiplicaporumapotênciade10deacordocomsua"classificação" (também atribuída a um novo valor de local), que são então resumido para produzir o número "rearranjado". Por exemplo, se o nosso número original for 231 , os passos gerais de cálculo para a primeira fórmula serão os seguintes:

=sum(1*power(10,2), 2*power(10,1), 3*power(10,0))  
=sum(100,20,3)
=123

O segmento REPT() da fórmula cuida de qualquer zeros à esquerda ou à direita.

O resultado será em formato de texto . Achei que seria uma boa ideia, já que há um limite para quantos dígitos você pode inserir em uma célula (recomendo ler esta pergunta SuperUser ).

Se você quiser fazer alguns cálculos com o resultado, basta inserir 0+ no início da fórmula para transformar o resultado em um número.

    
por 08.07.2012 / 07:32