
Me gustaría saber si existe una función de Excel o una fórmula que pueda usarse para ordenar dígitos dentro de una celda.
Por ejemplo, si el valor de A1 es 6193254807
y B1 tiene nuestra fórmula con parámetros configurados para ordenar de forma ascendente, entonces B1 debería ser igual 0123456789
(incluido el cero inicial). Por supuesto, si los parámetros se configuraron para que ordenaran de forma descendente, entonces B1 debería ser igual a 9876543210
.
¿Hay alguna manera de hacer esto sin tener que recurrir a VBScript, macros o algo igualmente exótico?
Respuesta1
Esto es posible con una fórmula matricial. Suponiendo que el número original está enA1, ingrese cualquiera de los ff. en una celda en blanco y confirme con Ctrl+ Shift+ Enter:
Ascendente:
=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,"")))
Ejemplo:
Cada fórmula toma lanorteel número más grande o más pequeño de la celda y lo multiplica por una potencia de 10 según su "rango" (también conocido como asignarle un nuevo valor posicional), que luego se suman para producir el número "reorganizado". Por ejemplo, si nuestro número original es 231
los pasos de cálculo general para la primera fórmula serían los siguientes:
=sum(1*power(10,2), 2*power(10,1), 3*power(10,0))
=sum(100,20,3)
=123
El REPT()
segmento de la fórmula se ocupa de los ceros iniciales o finales.
El resultado estará en formato de texto.. Pensé que esto sería una buena idea ya que hay un límite en cuanto a la cantidad de dígitos que puedes ingresar en una celda (recomiendo leeresta pregunta de superusuario).
Si desea hacer algunos cálculos con el resultado, simplemente inserte 0+
al principio de la fórmula para convertir el resultado en un número.