Desafío de fórmula: indicador de códigos fuera de secuencia - Rompecabezas

Tabla de contenido

El problema

Tenemos una lista de códigos alfanuméricos. Cada código consta de una sola letra (A, B, C, etc.) seguida de un número de 3 dígitos. Estos códigos deben aparecer en orden alfabético, pero a veces están fuera de secuencia. Queremos marcar los códigos fuera de secuencia.

Desafío # 1

¿Qué fórmula en la columna "Verificar" colocará una "x" al lado de un código que está fuera de secuencia? En este desafío, solo estamos verificando que la parte * numérica * del código esté fuera de secuencia, no que la letra en sí esté fuera de secuencia.

Desafío # 2

¿Cómo se puede extender la fórmula anterior para verificar si la parte "alfa" del código (A, B, C, etc.) está fuera de secuencia? Por ejemplo, deberíamos marcar un código que comienza con "A" si aparece después de un código que comienza con "C" o "B".

¡Descarga la hoja de trabajo a continuación y acepta el desafío!

Nota: hay 2 hojas en el libro de trabajo, una para el desafío n. ° 1 y otra para el desafío n. ° 2.

Sugerencia: este video muestra algunos consejos sobre cómo resolver un problema como este.

Supuestos

  1. Todos los códigos siempre contienen cuatro caracteres: 1 letra mayúscula + 3 números.
  2. El número de códigos por letra es aleatorio, pero no debe haber espacios en blanco en los valores numéricos.
  3. Solo es necesario marcar el primer código con una letra fuera de secuencia, no todos los códigos posteriores.
Respuesta (haga clic para expandir)

Aquí hay algunas soluciones de trabajo. Es importante comprender que hay muchas, muchas formas de resolver problemas comunes en Excel. Las respuestas a continuación son solo mis preferencias personales. En todas las fórmulas siguientes, se puede hacer clic en los nombres de las funciones si desea obtener más información.

Desafío # 1

Originalmente fui con esta fórmula:

=IF((LEFT(B5)=LEFT(B6))*(MID(B5,2,3)+1MID(B6,2,3)+0),"x","")

Nota MID devuelve texto. Al sumar 1 y sumar cero, obtenemos que Excel convierta el texto en un número. La multiplicación dentro de la prueba lógica dentro de IF usa lógica booleana para evitar otro IF anidado. No estoy seguro de por qué no utilicé RIGHT, que también funcionaría bien aquí.

También tenga en cuenta que LEFT no requiere la cantidad de caracteres y devolverá el primer carácter si no se proporciona.

Basándonos en algunas de las respuestas inteligentes a continuación, podemos optimizar un poco más:

=IF((LEFT(B5)=LEFT(B6))*(MID(B6,2,3)-MID(B5,2,3)1),"x","")

Aquí, la operación matemática de restar MID de MID convierte automáticamente los valores de texto en números.

Desafío # 2

Para esta solución, utilicé varios IF anidados (saltos de línea agregados para facilitar la lectura):

=IF(LEFT(B5)=LEFT(B6), IF((MID(B5,2,3)+1MID(B6,2,3)+0),"x",""), IF(CODE(B5)+1CODE(B6),"x",""))

Hice esto porque la primera prueba LEFT (B5) = LEFT (B6) determina si estamos verificando números o letras. Si el primer carácter es el mismo, estamos verificando números como arriba. Si no es así, solo verificamos la primera letra.

Tenga en cuenta que la función CÓDIGO devolverá el número ASCII del primer carácter si una cadena de texto contiene más de 1 carácter. Esto se siente como un truco, y quizás hace que el código sea menos comprensible, pero funciona :)

Si eso ofende su sensibilidad, use IZQUIERDA como arriba dentro de CÓDIGO para entregar solo el primer carácter.

Articulos interesantes...