Как отсортировать числа внутри ячейки в Excel?
Нам легко и привычно сортировать числа в списке столбцов, но пробовали ли вы когда-нибудь сортировать числа внутри одной ячейки? Возможно, у вас нет другого варианта, кроме как расставлять их по одному. Здесь я расскажу, как отсортировать числа внутри ячеек в Excel.
Сортировка чисел внутри ячеек с помощью формулы
Сортировка чисел внутри ячеек с помощью пользовательской функции
Сортировка чисел, разделенных запятыми внутри ячеек, с помощью кода VBA
Сортировка чисел внутри ячеек с помощью формулы
Чтобы отсортировать числа внутри ячеек на листе, вы можете применить следующую длинную формулу, сделайте следующее:
1. Рядом с вашими данными введите следующую формулу; в этом примере я введу её в ячейку C1, см. скриншот:
=TEXT(SUM(SMALL(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))))),REPT("0",LEN(A1)))
2. Затем нажмите клавиши Ctrl + Shift + Enter вместе, затем перетащите маркер заполнения по диапазону, к которому вы хотите применить эту формулу, и вы получите числа, отсортированные от меньшего к большему. См. скриншот:
Примечания:
1. Если количество цифр в числе в ячейке больше 15, эта формула не даст правильного результата.
2. Если вы хотите отсортировать числа по убыванию, вы можете использовать эту формулу: =TEXT(SUM(LARGE(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))))),REPT("0",LEN(A1))).
3. В приведённых выше формулах A1 указывает на ячейку, которая содержит числа, которые вы хотите отсортировать, вы можете изменить её по своему усмотрению.

Раскройте магию Excel с Kutools AI
- Умное выполнение: Выполняйте операции с ячейками, анализируйте данные и создавайте диаграммы — всё это посредством простых команд.
- Пользовательские формулы: Создавайте индивидуальные формулы для оптимизации ваших рабочих процессов.
- Кодирование VBA: Пишите и внедряйте код VBA без особых усилий.
- Интерпретация формул: Легко разбирайтесь в сложных формулах.
- Перевод текста: Преодолейте языковые барьеры в ваших таблицах.
Сортировка чисел внутри ячеек с помощью пользовательской функции
Поскольку у формулы есть некоторые ограничения, вы можете использовать следующую пользовательскую функцию для сортировки чисел в ячейках длиннее 15 цифр.
1. Удерживайте клавиши ALT + F11, чтобы открыть окно Microsoft Visual Basic for Applications.
2. Нажмите Insert > Module и вставьте следующий код в окно модуля.
Код VBA: Сортировка чисел внутри ячеек
Function SortNumsInCell(pNum As String, Optional pOrder As Boolean) As String
'Update 20140717
Dim xOutput As String
For i = 0 To 9
For j = 1 To UBound(VBA.Split(pNum, i))
xOutput = IIf(pOrder, i & xOutput, xOutput & i)
Next
Next
SortNumsInCell = xOutput
End Function
3. Затем сохраните и закройте этот код, вернитесь на свой рабочий лист и введите эту формулу =sortnumsincell(A1) в пустую ячейку рядом с вашими данными, см. скриншот:
4. Затем перетащите маркер заполнения к ячейкам, куда вы хотите поместить эту формулу, и все числа в ячейках будут отсортированы по возрастанию, как показано на следующем скриншоте:
Примечание: Если вы хотите отсортировать числа по убыванию, введите эту формулу =sortnumsincell(A1,1).
Сортировка чисел, разделённых запятыми внутри ячеек, с помощью кода VBA
Если ваши числа разделены определёнными символами, такими как запятая, точка с запятой, точка и т.д., как показано на следующем скриншоте, как можно их отсортировать в ячейках? Теперь я представлю вам код VBA для их сортировки.
1. Удерживайте клавиши ALT + F11, чтобы открыть окно Microsoft Visual Basic for Applications.
2. Нажмите Insert > Module и вставьте следующий код в окно модуля.
Код VBA: Сортировка чисел, разделённых запятыми внутри ячеек
Sub SortNumsInRange()
'Update 20140717
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set objArrayList = CreateObject("System.Collections.ArrayList")
For Each Rng In WorkRng
Arr = VBA.Split(Rng.Value, ",")
For i = 0 To UBound(Arr)
xMin = i
For j = i + 1 To UBound(Arr)
If Arr(xMin) > Arr(j) Then
xMin = j
End If
Next j
If xMin <> i Then
temp = Arr(i)
Arr(i) = Arr(xMin)
Arr(xMin) = temp
End If
Next i
Rng.Value = VBA.Join(Arr, ",")
Next
End Sub
3. Затем нажмите клавишу F5, чтобы запустить этот код, а затем выберите ячейки, содержащие числа, в появившемся диалоговом окне, см. скриншот:
4. Затем нажмите OK, и все числа в ячейках будут отсортированы по возрастанию в исходном диапазоне.
Примечание: Вы можете изменить запятую “,” на любой другой символ по необходимости в приведённом выше коде. Этот код может сортировать данные только по возрастанию.
Связанные статьи:
Как отсортировать числа с дефисами в Excel?
Как отсортировать данные по наиболее часто встречающемуся значению в Excel?
Как отсортировать адреса электронной почты по домену в Excel?
Как отсортировать строки, чтобы пустые ячейки оказались сверху в Excel?
Лучшие инструменты для повышения продуктивности работы с Office
Ускорьте работу в Excel с Kutools для Excel и ощутите новую степень эффективности. Kutools для Excel предлагает более300 расширенных функций для повышения продуктивности и экономии времени. Нажмите здесь, чтобы выбрать нужную вам функцию...
Office Tab добавляет вкладки в Office и делает вашу работу намного проще
- Включите редактирование и чтение с вкладками в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна, а не в отдельных окнах.
- Увеличьте свою продуктивность на50% и сократите сотни лишних кликов мышью каждый день!