Есть ли способ сортировать цифры внутри ячейки?

Есть ли способ сортировать цифры внутри ячейки?

Мне бы хотелось узнать, есть ли функция или формула Excel, которую можно использовать для сортировки цифр в ячейке.

Например, если значение A1 равно , 6193254807а B1 имеет нашу формулу с параметрами, установленными для сортировки по возрастанию, то B1 должно быть равно 0123456789(включая начальный ноль). Конечно, если параметры были установлены так, чтобы сортировка производилась по убыванию, то B1 должно быть равно 9876543210.

Есть ли способ сделать это, не прибегая к VBScript, макросам или чему-то столь же экзотическому?

решение1

Это возможно с формулой массива. Предполагая, что исходное число находится вА1, введите любой из следующих символов в пустую ячейку и зафиксируйте его с помощью 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,"")))

Пример:

введите описание изображения здесь

Каждая формула принимаетнth наибольшее или наименьшее число в ячейке и умножает его на степень 10 в соответствии с его "рангом" (т. е. присваивает ему новое разрядное значение), которые затем суммируются для получения "переставленного" числа. Например, если наше исходное число - это 231общие шаги расчета для первой формулы будут следующими:

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

В этом REPT()сегменте формулы учитываются все начальные и конечные нули.

Результат будет в текстовом формате.. Я подумал, что это будет хорошей идеей, поскольку существует ограничение на количество цифр, которые можно ввести в ячейку (рекомендую прочитатьэтот вопрос Суперпользователя).

Если вы хотите выполнить какие-либо вычисления с результатом, просто вставьте его 0+в начало формулы, чтобы превратить результат в число.

Связанный контент