Note: The other languages of the website are Google-translated. Back to English
Log på  \/ 
x
or
x
Tilmeld  \/ 
x

or

Hvordan sorterer man tal i en celle i Excel?

Det er let og almindeligt for os at sortere tal i en kolonneliste, men har du nogensinde prøvet at sortere tal inden for en enkelt celle? Måske er der ingen god måde for dig undtagen at arrangere dem en efter en, her vil jeg tale om, hvordan man sorterer tal inden for celler i Excel.

Sorter tal i celler med formel

Sorter numre i celler med brugerdefineret funktion

Sorter numre, der adskilles med kommaer i celler med VBA-kode


pil blå højre boble Sorter tal i celler med formel

For at sortere tal inden for celler i et regneark kan du anvende følgende lange formel, gør venligst som denne:

1. Ved siden af ​​dine data skal du indtaste følgende formel, i dette eksempel vil jeg skrive det i celle C1, se skærmbillede:

=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-sorter-numre-i-celler-1

2. Tryk derefter på Ctrl + Skift + Enter nøgler sammen, træk derefter fyldhåndtaget over til det område, som du vil anvende denne formel, og du får tallene sorteret fra lille til stor. Se skærmbillede:

doc-sorter-numre-i-celler-1

Bemærkninger:

1. Hvis cifret i tallet er mere end 15 i cellen, får denne formel ikke det rigtige resultat.

2. Hvis du vil sortere tallene i faldende rækkefølge, kan du bruge denne formel: =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. I ovenstående formler angiver A1 den celle, der indeholder de numre, du vil sortere, du kan ændre den til dit behov.


pil blå højre boble Sorter numre i celler med brugerdefineret funktion

Da der er nogle begrænsninger for formlen, kan du bruge følgende Brugerdefineret funktion for at sortere tal i celler, der er længere end 15 cifre.

1. Hold nede ALT + F11 tasterne, og det åbner Vinduet Microsoft Visual Basic til applikationer.

2. Klik indsatte > Moduler, og indsæt følgende kode i Modul vindue.

VBA-kode: Sorter numre i celler

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. Gem derefter og luk denne kode, gå tilbage til dit regneark, og indtast denne formel = sorteringsnummer (A1) i en tom celle ved siden af ​​dine data, se skærmbillede:

doc-sorter-numre-i-celler-1

4. Og træk derefter påfyldningshåndtaget til de celler, som du vil have denne formel, og alle numrene i cellerne er sorteret i stigende rækkefølge som vist på følgende skærmbillede:

doc-sorter-numre-i-celler-1

Bemærk: Hvis du vil sortere tallene i faldende rækkefølge, skal du indtaste denne formel = sorteringsnummer (A1,1).


pil blå højre boble Sorter numre, der adskilles med kommaer i celler med VBA-kode

Hvis dine tal er adskilt af visse tegn som komma, semikolon, punktum og så videre som følgende skærmbillede, hvordan kan du sortere dem i celler? Nu introducerer jeg en VBA-kode, som du kan sortere dem.

doc-sorter-numre-i-celler-1

1. Hold nede ALT + F11 nøgler til at åbne Vinduet Microsoft Visual Basic til applikationer.

2. Klik indsatte > Moduler, og indsæt følgende kode i Modul vindue.

VBA-kode: Sorteringsnumre adskilles med kommaer inden i celler

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. Tryk derefter på F5 nøgle til at køre denne kode, og vælg derefter dine celler, der indeholder tallene i den poppede prompt-boks, se skærmbillede:

doc-sorter-numre-i-celler-1

4. Og klik derefter på OK, er alle numrene i cellerne sorteret stigende i det oprindelige interval.

Bemærk: Du kan ændre kommaet “,” til andre tegn, som du har brug for i ovenstående kode. Og denne kode kan kun sortere data stigende.


Relaterede artikler:

Hvordan sorterer man tal med bindestreger i Excel?

Sådan sorteres data efter den hyppigste værdi i Excel?

Hvordan sorterer jeg e-mail-adresse efter domæne i Excel?

Hvordan sorterer man rækker for at placere de tomme celler øverst i Excel?


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2019 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60-dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50%og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    omer1905 · 11 months ago
    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?
    • To post as a guest, your comment is unpublished.
      skyyang · 11 months ago
      Hello, omer,
      May be the below code can help you, please try:

      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 Sub
      After inserting the above code, please apply this formula: =CellSort(A1).
      And you will get the result you need.
  • To post as a guest, your comment is unpublished.
    Biplab Das · 1 years ago
    How to sort A-Z text within a cell in Excel?
  • To post as a guest, your comment is unpublished.
    WALLAS · 2 years ago
    hOLA, MI PROBLEMA ES QUE TENGO EXEL 2019 EN ESPAÑOL COMO SERIA LA FORMULA?
  • To post as a guest, your comment is unpublished.
    MF · 4 years ago
    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?
  • To post as a guest, your comment is unpublished.
    Jijoy P Jacob · 4 years ago
    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
  • To post as a guest, your comment is unpublished.
    orly · 4 years ago
    need to sort 84-12-74-26-98 any order 12-26-74-84-98 or 98-84-74-26-12
    thank you
    • To post as a guest, your comment is unpublished.
      dd · 1 years ago
      If CInt(Arr(xMin)) > CInt(Arr(j)) and it works
  • To post as a guest, your comment is unpublished.
    Dave · 4 years ago
    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
  • To post as a guest, your comment is unpublished.
    Brian Dolan · 4 years ago
    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
  • To post as a guest, your comment is unpublished.
    wschloss · 6 years ago
    Hi, I was wondering how this UDF, [b]=sortnumsincell(A1,1)[/b], can be modified more generally, like [b]=sortnumsincell(A1," "," ",,1)[/b] where the first argument, [b]A1[/b], is the target cell, the second argument,[b]" "[/b], is a delimiter that could take any character, or a space, or nothing, with third argument, [b]" "[/b], a different or same delimiter, and the fourth argument, [b]1 or 0[/b], 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.
  • To post as a guest, your comment is unpublished.
    noob · 6 years ago
    sir, could you please help to sort the data for the duplicate first whether it's small or big
    Example
    1211 ---> 1112
    9495 ---> 9945
    7379 ---> 7739

    Thanks a lot for your help