Clasificación alfanumérica en Excel

11

En Excel, ¿es posible ordenar los caracteres alfanuméricos de a-1, a-2, a-3 ... a-123 en lugar de a-1, a-10, a-100, a-11?

Ordenar por más antiguo a más nuevo o por AZ, definitivamente no me dará el resultado que quiero. Intenté formatear las celdas como número, pero no sirvió de nada.

Estoy atascado.

beccabecca
fuente
Hola @beccabecca, acepte una respuesta, ya que esto no solo es útil para las personas que tienen una pregunta similar a la suya, sino que también recompensa a aquellos que han trabajado para brindarle una solución. ¡Salud!
David Michael Gregg

Respuestas:

4

El resultado

El usuario @ fixer1234 tiene razón, probablemente desee utilizar funciones de cadena. Aquí hay una forma de hacerlo.

Paso 1

[Actualizado]

En la columna "Números", resalte el rango, luego divida el texto en el guión: do ...

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

Tenga en cuenta que necesita un guión ( - ) en el Other:cuadro de texto. Y asegúrese de que la columna adyacente (a la derecha) esté vacía antes de hacer esto, para no sobrescribir datos importantes.

También podría usar esta función para extraer el número de la columna A:

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

Paso 2

Ahora, lo que vamos a hacer en el siguiente paso, como se puede ver en la captura de pantalla anterior, es agregar ceros al comienzo de cada uno de los números que tienen menos dígitos que el número más grande. Esto le permitirá ordenar estos números de la manera que desee.

Pero primero, necesitamos hacer un poco de investigación. Si puede decir fácilmente cuál es el número más grande, simplemente cuente los dígitos en ese número más grande; este será el número de ceros que desea usar en nuestra próxima función. Hay otra forma de determinar el número más largo, sin tener que contar los dígitos del número más grande manualmente.

[ACTUALIZACIÓN] Puede usar la siguiente función (aunque hasta ahora no sabemos por qué ) para determinar el número más largo:

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

Alternativamente, podría simplemente escribir la siguiente fórmula en una celda (verá esto en la imagen de arriba como la celda resaltada en naranja), pero en lugar de simplemente ENTERpresionar su tecla para configurar la celda, presione la tecla de acceso rápido CTRL-SHIFT-ENTER. Esto cambiará la naturaleza de la función, convirtiéndola en una fórmula de matriz , sin tener que jugar con funciones como INDEX().

=MAX(LEN(C2:C14))

(Asegúrese de que el rango sea preciso para la hoja de cálculo específica que está utilizando).

Después de presionar CTRL-SHIFT-ENTER, el contenido de la celda cambiará a esto, pero escribir esto manualmente no hará nada:

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

Sin embargo, si quieres hacerlo, está bien. Simplemente determine cuántos dígitos forman el número más grande en su lista: "1", por supuesto, tiene 1 dígito, "10" tiene 2 dígitos, "100" tiene 3 dígitos, y así sucesivamente.

Paso 3

Finalmente, en la columna "Expandir", esta función convertirá los números de la columna "Números" en texto con el número de ceros anteriores que determinó que debería usar en el Paso 2.

=TEXT(C2,"000")

Asegúrese de poner comillas alrededor de los ceros.

Si el número más grande tiene 8 dígitos, su función se verá así:

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

Una solución simple es usar funciones de cadena para poner los valores numéricos en una nueva columna como un número. Luego ordena en esa columna. No especificó cómo pueden variar los valores o cómo están organizados, pero un ejemplo:

Suponga que el prefijo "a-" nunca cambia, las entradas están en la columna A que comienza en la fila 2 y la columna B está disponible. En B2, debería poner algo como: = valor (mid (a2,3, len (a2) -2)) y luego copiar la fórmula según sea necesario. Para ordenar, resalte ambas columnas y ordene en B.

Si puede haber otros prefijos, digamos b-, c-, etc., divida de manera similar la porción de texto en otra columna. Luego clasifique en la columna de texto como la primera columna de clasificación y la columna de números como la segunda.

Todo lo que resaltes se ordenará según las columnas de clasificación.

Para explicar las funciones de cadena, comience con la función mid, que extrae una cadena de caracteres de una cadena de caracteres. mid (a2,3, len (a2) -2) mira el texto en a2, comienza con el tercer carácter (el primer dígito asumiendo que todos los prefijos son "a-"), y luego toma el número de caracteres que es dos menos que el número en el texto original (la longitud del texto original menos los caracteres "a-"). La función de valor convierte ese resultado en un número en lugar de una cadena de caracteres numéricos.

fijador1234
fuente
Lo siento, ¿podrías explicar un poco más en detalles? ¿Qué es la función de cadena?
beccabecca
Entonces, para B3 sería = valor (mid (a3,3, len (a3) ​​-2))? Estoy en lo cierto? Entonces será así y así sucesivamente? Lo siento, espero no hacer preguntas tontas ...
beccabecca
Lo tienes. Una vez que cree la fórmula en B2, puede copiarla, resaltar las celdas B para todas las filas que necesite y pegar. Cambiará automáticamente las referencias de celda para que coincidan fila por fila.
fijador1234
2

Tengo los siguientes datos:

[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

Datos iniciales que se ordenarán de acuerdo con la cadena alfanumérica

Quiero que los estudiantes y las marcas se organicen de acuerdo con sus números de registro, que son cadenas alfanuméricas. El resultado final debería ser así:

[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

El resultado final debería verse así

Cómo:

Pasos para convertir cadenas alfanuméricas a números puros

Aunque la instantánea anterior es obvia, los pasos son los siguientes:

  1. Extraiga la parte alfabética en una columna utilizando =LEFT(B4, 2)como fórmula, donde '2' muestra el número de alfabetos en la cadena y comienzan mis cadenas B4.

  2. Asigne un número a esta parte alfabética usando =COLUMN(INDIRECT(E4&1))

  3. Extraiga la parte numérica del número de registro utilizando =RIGHT(B4,2)como fórmula. Aquí '2' es el no. de números en la cadena.

  4. Concatenar las dos partes en 2 y 3

  5. Convierta estos a números 'puros' usando =VALUE(H4)

  6. Copie la última columna a la tabla original y use la opción Pegar como 'Valores'

    Datos iniciales agregados con cadenas alfanuméricas convertidas a números

  7. Ahora, ordene según la última columna y elija 'Expandir la selección'

    Ordenar 1

    Ordenar 2

  8. ¡¡¡Hecho!!!

    Salida final

Importante: Pro-Tip -> Combina los pasos del 1 al 5 usando =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))

BK_
fuente
Aparte: como en este ejemplo, todos los números de registro tienen la misma longitud, muy bien usando ceros a la izquierda para la parte numérica : ¿no funcionaría una ordenación normal fuera de la caja?
Arjan