Tri alphanumérique dans Excel

11

Dans Excel, est-il possible de trier les caractères alphanumériques de a-1, a-2, a-3 ... a-123 au lieu de a-1, a-10, a-100, a-11?

Trier par le plus ancien au plus récent ou via AZ, ne me donnera certainement pas le résultat que je veux. J'ai essayé de formater les cellules en nombre, mais cela n'a pas aidé.

Je suis coincé.

beccabecca
la source
Bonjour @beccabecca, veuillez accepter une réponse, car cela est non seulement utile pour les personnes qui ont une question similaire à la vôtre, mais cela récompense également ceux qui ont travaillé pour vous proposer une solution. À votre santé!
David Michael Gregg

Réponses:

4

Le résultat

L'utilisateur @ fixer1234 a raison, vous voulez probablement utiliser des fonctions de chaîne. Voici une façon de procéder.

Étape 1

[Mise à jour]

Dans la colonne "Numéros", mettez en surbrillance la plage, puis fractionnez le texte au trait d'union: faites ...

Data> Text to Columns> Delimited> Next> Other: ->Finish

Notez que vous avez besoin d'un trait d'union ( - ) dans la Other:zone de texte. Et assurez-vous que la colonne adjacente (à droite) est vide avant de le faire, afin de ne pas écraser les données importantes.

Vous pouvez également utiliser cette fonction pour extraire le nombre de la colonne A:

=RIGHT(A2,LEN(A2)-SEARCH("-",A2))

Étape 2

Maintenant, ce que nous allons faire à l'étape suivante, comme vous pouvez le voir sur la capture d'écran ci-dessus, est d'ajouter des zéros au début de chacun des nombres qui ont moins de chiffres que le plus grand nombre. Cela vous permettra de trier ces numéros comme vous le souhaitez.

Mais d'abord, nous devons faire un peu d'enquête. Si vous pouvez facilement dire quel est le plus grand nombre, alors comptez simplement les chiffres de ce plus grand nombre - ce sera le nombre de zéros que vous souhaitez utiliser dans notre prochaine fonction. Il existe une autre façon de déterminer le nombre le plus long, sans avoir à compter manuellement les chiffres du plus grand nombre.

[MISE À JOUR] Vous pouvez utiliser la fonction suivante (mais jusqu'à présent, nous ne savons pas très bien pourquoi ) pour déterminer le nombre le plus long:

=MAX(INDEX(LEN(C2:C14),,1))

Alternativement, vous pouvez simplement taper la formule suivante dans une cellule (vous voyez cela dans l'image ci-dessus comme la cellule en surbrillance orange), mais au lieu d'appuyer simplement sur votre ENTERtouche pour définir la cellule, appuyez sur le raccourci clavier CTRL-SHIFT-ENTER. Cela changera la nature de la fonction, la transformant en une formule matricielle , sans avoir à jouer avec des fonctions telles que INDEX().

=MAX(LEN(C2:C14))

(Assurez-vous que la plage est exacte pour la feuille de calcul spécifique que vous utilisez.)

Après avoir frappé CTRL-SHIFT-ENTER, le contenu de la cellule changera en ceci, mais en tapant ceci manuellement ne fera rien:

{=MAX(LEN(C2:C14))}

Cependant, vous voulez le faire, c'est bien. Déterminez simplement combien de chiffres constituent le plus grand nombre de votre liste: «1» a bien sûr 1 chiffre, «10» a 2 chiffres, «100» a 3 chiffres, et ainsi de suite.

Étape 3

Enfin, dans la colonne "Développer", cette fonction convertira les nombres de la colonne "Numéros" en texte avec le nombre de zéros précédents que vous avez déterminé que vous devriez utiliser à l'étape 2.

=TEXT(C2,"000")

Assurez-vous que vous mettez des guillemets autour des zéros.

Si le plus grand nombre a 8 chiffres, votre fonction ressemblera à ceci:

=TEXT(C2,"00000000")
David Michael Gregg
la source
2

Une solution simple consiste à utiliser des fonctions de chaîne pour placer les valeurs numériques dans une nouvelle colonne sous forme de nombre. Triez ensuite sur cette colonne. Vous n'avez pas spécifié comment les valeurs peuvent varier ou comment elles sont organisées, mais un exemple:

Supposons que le préfixe "a-" ne change jamais, les entrées sont dans le col A à partir de la ligne 2 et le col B est disponible. En B2, vous mettriez quelque chose comme: = valeur (mid (a2,3, len (a2) -2)), puis copiez la formule selon vos besoins. Pour trier, mettez en surbrillance les deux colonnes et triez sur B.

S'il peut y avoir d'autres préfixes, disons b-, c-, etc., divisez de la même manière la partie texte en une autre colonne. Triez ensuite la colonne de texte comme première colonne de tri et la colonne numérique comme seconde.

Tout ce que vous mettez en surbrillance sera trié selon les colonnes de tri.

Pour expliquer les fonctions de chaîne, commencez par la fonction mid, qui extrait une chaîne de caractères d'une chaîne de caractères. mid (a2,3, len (a2) -2) examine le texte de a2, commence par le troisième caractère (le premier chiffre en supposant que tous les préfixes sont "a-"), puis prend le nombre de caractères qui est deux de moins que le nombre dans le texte d'origine (la longueur du texte d'origine moins les caractères "a-"). La fonction de valeur transforme ensuite ce résultat en un nombre au lieu d'une chaîne de caractères numériques.

fixateur1234
la source
Désolé, pourriez-vous expliquer un peu plus en détail? Quelle est la fonction chaîne?
beccabecca
Donc, pour B3 serait = valeur (mid (a3,3, len (a3) ​​-2))? Ai-je raison? Alors ce sera ainsi de suite et ainsi de suite? Désolé j'espère que je ne pose pas de questions stupides ...
beccabecca
Tu l'as eu. Une fois que vous avez créé la formule dans B2, vous pouvez simplement la copier, mettre en surbrillance les cellules B pour autant de lignes que vous en avez besoin et coller. Il modifiera automatiquement les références de cellule pour correspondre ligne par ligne.
fixer1234
2

J'ai les données suivantes:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Lisa            DD38                      90

Aletta          BC36                      85

Ava             AB40                      95

Sunny           BB34                      91

Sofia           CD36                      89

Johnny          CM07                      80

Données initiales à trier selon la chaîne AlphaNumeric

Je souhaite que les étudiants et les notes soient classés en fonction de leurs numéros d'inscription, qui sont des chaînes alphanumériques. La sortie finale devrait ressembler à ceci:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Ava             AB40                      95

Sunny           BB34                      91

Aletta          BC36                      85

Sofia           CD36                      89

Johnny          CM07                      80

Lisa            DD38                      90

La sortie finale devrait ressembler à ceci

Comment:

Étapes pour convertir une chaîne alphanumérique en nombres purs

Bien que l'instantané ci-dessus soit évident, les étapes sont les suivantes:

  1. Extrayez la partie alphabétique dans une colonne en utilisant =LEFT(B4, 2)comme formule, où '2' indique le nombre d'alphabets dans la chaîne et mes chaînes commencent B4.

  2. Attribuez un numéro à cette partie alphabétique à l'aide de =COLUMN(INDIRECT(E4&1))

  3. Extrayez la partie numérique du numéro d'enregistrement en utilisant =RIGHT(B4,2)comme formule. Ici, «2» est le non. de nombres dans la chaîne.

  4. Concaténer les deux parties en 2 et 3

  5. Convertissez-les en nombres «purs» en utilisant =VALUE(H4)

  6. Copiez la dernière colonne dans le tableau d'origine et utilisez l'option Coller comme 'Valeurs'

    Données initiales ajoutées avec des chaînes alphanumériques converties en nombres

  7. Maintenant, triez selon la dernière colonne et choisissez «Agrandir la sélection»

    Tri 1

    Tri 2

  8. Terminé!!!

    Sortie finale

Important: Pro-Tip -> Combinez les étapes de 1 à 5 en utilisant =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))

BK_
la source
En plus: comme dans cet exemple, les numéros d'enregistrement ont tous la même longueur, en utilisant joliment des zéros de tête pour la partie numérique : un tri régulier ne fonctionnerait-il pas hors de la boîte?
Arjan