Это возможно с формулой массива. Предполагая, что исходный номер в A1, введите любой из ff. в пустую ячейку и зафиксируйте его с помощью Ctrl + Shift + Enter:
По возрастанию:
=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,""))))))
По убыванию:
=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,"")))
Пример:
Каждая формула берет n- е наибольшее или наименьшее число в ячейке и умножает его на степень 10 в соответствии с ее "рангом" (или присваивает ему новое значение места), которые затем суммируются для получения "переставленного" числа. Например, если наше исходное число равно 231
общие шаги расчета для первой формулы будут следующими:
=sum(1*power(10,2), 2*power(10,1), 3*power(10,0))
=sum(100,20,3)
=123
Сегмент REPT()
формулы обрабатывает любые начальные или конечные нули.
Результат будет в текстовом формате. Я подумал, что это было бы хорошей идеей, так как есть ограничение на количество цифр, которые вы можете ввести в ячейку (я рекомендую прочитать этот вопрос SuperUser).
Если вы хотите выполнить некоторые вычисления с результатом, просто вставьте 0+
в начало формулы, чтобы превратить результат в число.