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.