Ordinamento alfanumerico in Excel


11

In Excel, è possibile ordinare i caratteri alfanumerici da a-1, a-2, a-3 ... a-123 anziché a-1, a-10, a-100, a-11?

L'ordinamento dal più vecchio al più recente o tramite AZ, sicuramente non mi darà il risultato che desidero. Ho provato a formattare le celle come numero, ma non ha aiutato.

Sono bloccato.


Ciao @beccabecca, ti preghiamo di accettare una risposta, poiché non è utile solo per le persone che hanno una domanda simile alla tua, ma premia anche coloro che hanno lavorato per fornirti una soluzione. Saluti!
David Michael Gregg,

Risposte:


4

Il risultato

L'utente @ fixer1234 ha ragione, probabilmente si desidera utilizzare le funzioni di stringa. Ecco un modo per farlo.

Passo 1

[Aggiornamento]

Nella colonna "Numeri", evidenzia l'intervallo, quindi dividi il testo nel trattino: fai ...

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

Si noti che è necessario un trattino ( - ) nella Other:casella di testo. E assicurati che la colonna adiacente (a destra) sia vuota prima di farlo, in modo da non sovrascrivere i dati importanti.

È inoltre possibile utilizzare questa funzione per estrarre il numero dalla colonna A:

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

Passo 2

Ora, quello che faremo nel passaggio successivo, come puoi vedere dallo screenshot sopra, è aggiungere zero all'inizio di ciascuno dei numeri che hanno meno cifre del numero più grande. Ciò ti consentirà di ordinare questi numeri nel modo desiderato.

Ma prima, dobbiamo fare un po 'di accertamento dei fatti. Se riesci a capire facilmente qual è il numero più grande, conta le cifre in quel numero più grande: questo sarà il numero di zero che vuoi usare nella nostra prossima funzione. Esiste un altro modo per determinare il numero più lungo, senza dover contare manualmente le cifre del numero più grande.

[AGGIORNAMENTO] È possibile utilizzare la seguente funzione (anche se finora non sappiamo bene perché ) per determinare il numero più lungo:

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

In alternativa, puoi semplicemente digitare la seguente formula in una cella (la vedi nell'immagine sopra come cella evidenziata in arancione), ma invece di premere semplicemente il ENTERtasto per impostare la cella, premi il tasto di scelta rapida CTRL-SHIFT-ENTER. Questo cambierà la natura della funzione, trasformandola in una formula array , senza dover giocare con funzioni come INDEX().

=MAX(LEN(C2:C14))

(Assicurati che l'intervallo sia accurato per il foglio di calcolo specifico che stai utilizzando.)

Dopo aver colpito CTRL-SHIFT-ENTER, il contenuto della cella cambierà in questo, ma digitandolo manualmente non farà nulla:

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

Comunque tu voglia farlo, va bene. Basta determinare quante cifre compongono il numero più grande nell'elenco: "1" ovviamente ha 1 cifra, "10" ha 2 cifre, "100" ha 3 cifre e così via.

Passaggio 3

Infine, nella colonna "Espandi", questa funzione convertirà i numeri dalla colonna "Numeri" in testo con il numero di zeri precedenti che hai deciso di utilizzare nel passaggio 2.

=TEXT(C2,"000")

Assicurati di mettere le virgolette attorno agli zero.

Se il numero più grande ha 8 cifre, la tua funzione sarà simile a questa:

=TEXT(C2,"00000000")

2

Una soluzione semplice consiste nell'utilizzare le funzioni stringa per inserire i valori numerici in una nuova colonna come numero. Quindi ordina su quella colonna. Non hai specificato come i valori possono variare o come sono organizzati, ma un esempio:

Supponiamo che il prefisso "a-" non cambi mai, le voci sono nella colonna A a partire dalla riga 2 e la colonna B è disponibile. In B2, dovresti inserire qualcosa del tipo: = value (mid (a2,3, len (a2) -2)) e quindi copiare la formula secondo necessità. Per ordinare, evidenziare entrambe le colonne e ordinare su B.

Se possono esserci altri prefissi, ad esempio b-, c-, ecc., Dividere in modo simile la porzione di testo in un'altra colonna. Quindi ordina sulla colonna di testo come prima colonna di ordinamento e la colonna numerica come seconda.

Tutto ciò che evidenzi verrà ordinato in base alle colonne di ordinamento.

Per spiegare le funzioni stringa, inizia con la funzione mid, che estrae una stringa di caratteri da una stringa di caratteri. mid (a2,3, len (a2) -2) guarda il testo in a2, inizia con il terzo carattere (la prima cifra presuppone che tutti i prefissi siano "a-") e quindi prende il numero di caratteri che è due in meno rispetto al numero nel testo originale (la lunghezza del testo originale meno i caratteri "a-"). La funzione value trasforma quindi quel risultato in un numero anziché in una stringa di caratteri numerici.


Scusa, potresti spiegarmi un po 'di più in dettaglio? Che cos'è la funzione stringa?
beccabecca,

Quindi, per B3 sarebbe = valore (metà (a3,3, len (a3) ​​-2))? Ho ragione? Allora sarà così e così via? Mi dispiace spero di non fare domande stupide ...
beccabecca,

Avete capito bene. Una volta creata la formula in B2, puoi semplicemente copiarla, evidenziare le celle B per tutte le righe necessarie e incollarle. Cambierà automaticamente i riferimenti di cella in modo che corrispondano riga per riga.
Fixer 1234

2

Ho i seguenti dati:

[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

Dati iniziali da ordinare in base alla stringa AlphaNumeric

Voglio che gli studenti e i voti siano organizzati in base ai loro numeri di registrazione, che sono stringhe alfanumeriche. L'output finale dovrebbe essere così:

[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

L'output finale dovrebbe apparire così

Come:

Passaggi per convertire una stringa alfanumerica in numeri puri

Anche se lo snapshot sopra è ovvio, i passaggi sono i seguenti:

  1. Estrai la parte alfabetica in una colonna usando =LEFT(B4, 2)come formula, dove '2' mostra il numero di alfabeti nella stringa e le mie stringhe iniziano B4.

  2. Assegna un numero a questa parte alfabetica usando =COLUMN(INDIRECT(E4&1))

  3. Estrai la parte numerica del numero di registrazione usando =RIGHT(B4,2)come formula. Qui '2' è il no. di numeri nella stringa.

  4. Concatenare le due parti in 2 e 3

  5. Converti questi in numeri 'puri' usando =VALUE(H4)

  6. Copia l'ultima colonna nella tabella originale e utilizza l'opzione Incolla come "Valori"

    Dati iniziali aggiunti con stringhe alfanumeriche convertite in numeri

  7. Ora ordina in base all'ultima colonna e scegli "Espandi la selezione"

    Ordinamento 1

    Ordinamento 2

  8. Fatto!!!

    Uscita finale

Importante: Pro-Tip -> Combina i passaggi da 1 a 5 usando =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))


A parte: come in questo esempio i numeri di registrazione hanno tutti la stessa lunghezza, usando bene gli zeri iniziali per la parte numerica : un ordinamento normale non funzionerebbe fuori dalla scatola?
Arjan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.