Note: The other languages of the website are Google-translated. Back to English
Se connecter  \/ 
x
or
x
INSCRIPTION  \/ 
x

or

Comment trier les nombres dans une cellule dans Excel?

Il est facile et courant pour nous de trier les nombres dans une liste de colonnes, mais avez-vous déjà essayé de trier les nombres dans une seule cellule? Peut-être qu'il n'y a pas de bon moyen pour vous sauf de les organiser un par un, ici, je vais parler de la façon de trier les nombres dans les cellules dans Excel.

Trier les nombres dans les cellules avec une formule

Trier les nombres dans les cellules avec la fonction définie par l'utilisateur

Trier les nombres séparés par des virgules dans les cellules avec le code VBA


flèche bleue bulle droite Trier les nombres dans les cellules avec une formule

Pour trier les nombres dans les cellules d'une feuille de calcul, vous pouvez appliquer la formule longue suivante, procédez comme suit:

1. À côté de vos données, veuillez entrer la formule suivante, dans cet exemple, je vais la taper dans la cellule C1, voir capture d'écran:

=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-nombres-dans-cellules-1

2. Puis appuyez Ctrl + Maj + Entrée clés ensemble, puis faites glisser la poignée de recopie sur la plage à laquelle vous souhaitez appliquer cette formule, et vous obtiendrez que les nombres ont été triés de petit à grand. Voir la capture d'écran:

doc-sort-nombres-dans-cellules-1

Notes:

1. Si le chiffre du nombre est supérieur à 15 dans la cellule, cette formule n'obtiendra pas le résultat correct.

2. Si vous souhaitez trier les nombres par ordre décroissant, vous pouvez utiliser cette formule: =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. Dans les formules ci-dessus, A1 indique la cellule qui contient les nombres que vous souhaitez trier, vous pouvez la modifier selon vos besoins.


flèche bleue bulle droite Trier les nombres dans les cellules avec la fonction définie par l'utilisateur

Comme il existe certaines limitations de la formule, vous pouvez utiliser les éléments suivants Fonction définie par l'utilisateur pour trier les nombres dans les cellules de plus de 15 chiffres.

1. Maintenez le ALT + F11 clés, et il ouvre le Fenêtre Microsoft Visual Basic pour Applications.

2. Cliquez insérer > Moduleet collez le code suivant dans le Fenêtre du module.

Code VBA: trier les nombres dans les cellules

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. Ensuite, enregistrez et fermez ce code, revenez à votre feuille de calcul et entrez cette formule = sortnumsincell (A1) dans une cellule vide à côté de vos données, voir capture d'écran:

doc-sort-nombres-dans-cellules-1

4. Et puis faites glisser la poignée de remplissage vers les cellules que vous souhaitez contenir cette formule, et tous les nombres dans les cellules ont été triés dans l'ordre croissant comme illustré ci-dessous:

doc-sort-nombres-dans-cellules-1

Notes: Si vous souhaitez trier les nombres par ordre décroissant, veuillez saisir cette formule = sortnumsincell (A1,1).


flèche bleue bulle droite Trier les nombres séparés par des virgules dans les cellules avec le code VBA

Si vos nombres sont séparés par certains caractères tels que la virgule, le point-virgule, le point, etc. comme la capture d'écran suivante, comment pouvez-vous les trier dans les cellules? Maintenant, je vous présente un code VBA pour que vous puissiez les trier.

doc-sort-nombres-dans-cellules-1

1. Maintenez le ALT + F11 clés pour ouvrir le Fenêtre Microsoft Visual Basic pour Applications.

2. Cliquez insérer > Moduleet collez le code suivant dans le Fenêtre du module.

Code VBA: les numéros de tri sont séparés par des virgules dans les cellules

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. Puis appuyez F5 clé pour exécuter ce code, puis sélectionnez vos cellules qui contiennent les nombres dans la boîte de dialogue contextuelle, voir capture d'écran:

doc-sort-nombres-dans-cellules-1

4. Et puis cliquez OK, tous les nombres des cellules ont été triés par ordre croissant dans la plage d'origine.

Notes: Vous pouvez remplacer la virgule «,» par tout autre caractère selon vos besoins dans le code ci-dessus. Et ce code ne peut trier les données que par ordre croissant.


Articles Liés:

Comment trier les nombres avec des traits d'union dans Excel?

Comment trier les données par la valeur la plus fréquente dans Excel?

Comment trier l'adresse e-mail par domaine dans Excel?

Comment trier les lignes pour mettre les cellules vides en haut dans Excel?


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
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 · 1 years 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 · 1 years 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