Прескочи на основното съдържание

Как да сортирате числа в клетка в Excel?

Автор: Xiaoyang Последна промяна: 2020-10-23

За нас е лесно и обичайно да сортираме числа в списък от колони, но опитвали ли сте някога да сортирате числа в една клетка? Може би няма добър начин за вас, освен да ги подредите един по един, тук ще говоря за това как да сортирате числа в клетки в 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)))

doc-sort-numbers-in-cells-1

2. След това натиснете Ctrl + Shift + Enter клавиши заедно, след това плъзнете манипулатора за попълване до диапазона, към който искате да приложите тази формула, и ще получите, че числата са сортирани от малки към големи. Вижте екранна снимка:

doc-sort-numbers-in-cells-1

Забележки:

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 показва клетката, която съдържа числата, които искате да сортирате, можете да я промените според вашите нужди.


стрелка син десен балон Сортирайте числа в клетки с дефинирана от потребителя функция

Тъй като има някои ограничения на формулата, можете да използвате следното Потребителска функция за сортиране на числа в клетки, по-дълги от 15 цифри.

1. Задръжте натиснат ALT + F11 ключове и отваря Прозорец на Microsoft Visual Basic за приложения.

2. Щракнете Поставете > Модулии поставете следния код в Прозорец на модула.

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) в празна клетка до вашите данни, вижте екранна снимка:

doc-sort-numbers-in-cells-1

4. И след това плъзнете манипулатора за попълване към клетките, които искате да съдържат тази формула, и всички числа в клетките са сортирани във възходящ ред, както е показано на следната екранна снимка:

doc-sort-numbers-in-cells-1

Забележка: Ако искате да сортирате числата в низходящ ред, моля, въведете тази формула =sortnumsincell(A1,1).


стрелка син десен балон Сортирайте числата, разделени със запетаи в клетки с VBA код

Ако числата ви са разделени с определени знаци като запетая, точка и запетая, точка и т.н., както следва екранната снимка, как можете да ги сортирате в клетки? Сега представям VBA код, за да ги сортирате.

doc-sort-numbers-in-cells-1

1. Задръжте натиснат ALT + F11 за да отворите Прозорец на Microsoft Visual Basic за приложения.

2. Щракнете Поставете > Модулии поставете следния код в Прозорец на модула.

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 клавиш, за да стартирате този код, и след това изберете вашите клетки, които съдържат числата в изскачащото поле за подкана, вижте екранната снимка:

doc-sort-numbers-in-cells-1

4, И после щракнете върху OK, всички числа в клетките са сортирани във възходящ ред в оригиналния диапазон.

Забележка: Можете да промените запетаята „,“ на всякакви други знаци, които са ви необходими в горния код. И този код може да сортира данните само по възходящ ред.


Още по темата:

Как да сортирате числа с тирета в Excel?

Как да сортирате данните по най-честата стойност в Excel?

Как да сортирате имейл адрес по домейн в Excel?

Как да сортирате редове, за да поставите празните клетки отгоре в Excel?

Най-добрите инструменти за продуктивност в офиса

🤖 Kutools AI помощник: Революционизирайте анализа на данни въз основа на: Интелигентно изпълнение   |  Генериране на код  |  Създаване на персонализирани формули  |  Анализирайте данни и генерирайте диаграми  |  Извикване на функциите на Kutools...
Популярни функции: Намерете, маркирайте или идентифицирайте дубликати   |  Изтриване на празни редове   |  Комбинирайте колони или клетки без загуба на данни   |   Кръг без формула ...
Супер търсене: VLookup с множество критерии    VLookup с множество стойности  |   VLookup в няколко листа   |   Размито търсене ....
Разширен падащ списък: Бързо създаване на падащ списък   |  Зависим падащ списък   |  Падащ списък с множество избори ....
Мениджър на колони: Добавете конкретен брой колони  |  Преместване на колони  |  Превключване на състоянието на видимост на скритите колони  |  Сравнете диапазони и колони ...
Препоръчани функции: Мрежов фокус   |  Изглед на дизайна   |   Голям формула бар    Мениджър на работни книги и листове   |  Библиотека с ресурси (Автоматичен текст)   |  Избор на дата   |  Комбинирайте работни листове   |  Шифроване/декриптиране на клетки    Изпращайте имейли по списък   |  Супер филтър   |   Специален филтър (филтър получер/курсив/зачертано...) ...
Топ 15 комплекта инструменти12 Текст Инструменти (добавяне на текст, Премахване на символи, ...)   |   50 + Графика Видове (диаграма на Гант, ...)   |   40+ Практичен формули (Изчислете възрастта въз основа на рождения ден, ...)   |   19 вмъкване Инструменти (Въведете QR код, Вмъкване на картина от пътя, ...)   |   12 Конверсия Инструменти (Числа към думи, Валутен обмен, ...)   |   7 Обединяване и разделяне Инструменти (Разширено комбиниране на редове, Разделени клетки, ...)   |   ... и още

Усъвършенствайте уменията си за Excel с Kutools за Excel и изпитайте ефективност, както никога досега. Kutools за Excel предлага над 300 разширени функции за повишаване на производителността и спестяване на време.  Щракнете тук, за да получите функцията, от която се нуждаете най-много...

Описание


Раздел Office Внася интерфейс с раздели в Office и прави работата ви много по-лесна

  • Разрешете редактиране и четене с раздели в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Отваряйте и създавайте множество документи в нови раздели на един и същ прозорец, а не в нови прозорци.
  • Увеличава вашата производителност с 50% и намалява стотици кликвания на мишката за вас всеки ден!
Comments (13)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hola, se pueden ordenar letras en una sola celda por orden alfabético? Yo uso excel para Mac. Gracias
This comment was minimized by the moderator on the site
Hi thanks for nice good for sorting numbers which separated by commas within cells with VBA code
Just I have faced one problem with the code.
The code cannot detect three digit number. for example the numbers (65, 93, 53, 72, 64, 85, 103, 48, 77, 81, 54) after applying the code, the new order (103, 48, 53, 54, 64, 65, 72, 77, 81, 85, 93)
Do you have any solution for the problem?
This comment was minimized by the moderator on the site
Hello, omer,May be the below code can help you, please try:
<div data-tag="code">Public Function CellSort(r As Range) As String
Dim bry() As Long, L As Long, U As Long
ch = r(1).Text
ary = Split(ch, ",")
L = LBound(ary)
U = UBound(ary)
ReDim bry(L To U)
For i = LBound(ary) To UBound(ary)
bry(i) = CLng(ary(i))
Next i
Call BubbleSort(bry)
For i = LBound(bry) To UBound(bry)
ary(i) = CStr(bry(i))
Next i
CellSort = Join(ary, ",")
End Function

Sub BubbleSort(arr)
Dim strTemp As Variant
Dim i As Long
Dim j As Long
Dim lngMin As Long
Dim lngMax As Long
lngMin = LBound(arr)
lngMax = UBound(arr)
For i = lngMin To lngMax - 1
For j = i + 1 To lngMax
If arr(i) > arr(j) Then
strTemp = arr(i)
arr(i) = arr(j)
arr(j) = strTemp
End If
Next j
Next i
End SubAfter inserting the above code, please apply this formula: =CellSort(A1).And you will get the result you need.
This comment was minimized by the moderator on the site
How to sort A-Z text within a cell in Excel?
This comment was minimized by the moderator on the site
hOLA, MI PROBLEMA ES QUE TENGO EXEL 2019 EN ESPAÑOL COMO SERIA LA FORMULA?
This comment was minimized by the moderator on the site
Hi, the VBA code seems to output incorrectly, example before 13,50,47,7,39 and after 13-39-47-50-7. Any ideas why?
This comment was minimized by the moderator on the site
i want to sort total an amount 14000 to 20000 from various row Example:- 2000,1500 one row and like that all row amount to arrange
This comment was minimized by the moderator on the site
need to sort 84-12-74-26-98 any order 12-26-74-84-98 or 98-84-74-26-12 thank you
This comment was minimized by the moderator on the site
If CInt(Arr(xMin)) > CInt(Arr(j)) and it works
This comment was minimized by the moderator on the site
Is there is any way to sort more numbers in same time from one cell? Example, i have a list of 50000 asset numbers such as A1234,A1235... and i need to pull 500 specific numbers and i need to pull 500 at the time to make change and save.Thank you
This comment was minimized by the moderator on the site
I have a series of cells with numbers separated by a space that I want to sort. eg 8 4 5 1 6 3 that I want to sort as 1 3 4 5 6 8 Any help appreciated
This comment was minimized by the moderator on the site
Hi, I was wondering how this UDF, =sortnumsincell(A1,1), can be modified more generally, like =sortnumsincell(A1," "," ",,1) where the first argument, A1, is the target cell, the second argument," ", is a delimiter that could take any character, or a space, or nothing, with third argument, " ", a different or same delimiter, and the fourth argument, 1 or 0, indicating an ascending or descending sort, with the result string displaying, correctly sorted, within one cell, with delimiter default same as the original string unless specified in the third term. I would like it to work both on string and numerical, and sometimes the second or third argument might be a line feed, as would be manually entered with alt-enter. You'd be my hero of the month if you could do that. I tried but failed miserably. Thank you.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations