martes, 1 de noviembre de 2016

Encontrar Mayúsculas y Minúsculas en Excel

Trabajaremos hoy con las mayúsculas y minúsculas escritas en nuestras celdas de Excel.
En concreto nos centraremos en responder a estas preguntas:
1- ¿Contiene mayúsculas nuestro texto?
2- ¿Contiene minúsculas nuestro texto?
3- ¿Posición Primera Mayúscula en la celda?
4- ¿Cuál es la primera mayúscula de nuestra celda?



Vamos con la primera cuestión: ¿Contiene mayúsculas nuestra celda?
Sobre la celda B2 que contiene el texto 'excelForo' podemos aplicar la fórmula:
=NO(IGUAL(B2;MINUSC(B2)))
de fácil interpretación.
Con la función IGUAL comparamos la exactitud del texto de la celda B2 frente al texto tratado y convertido todo en minúscula (conseguido con la función MINUSC).
Si el texto antes y después de la conversión coincide, implica que todas las letras son minúsculas. En caso contrario, existe al menos una diferencia, esto es, hay al menos una letra mayúscula.
Si NO todo era minúscula, entonces existen mayúsculas. Silogismo que conseguimos al anidar la función IGUAL dentro de la función NO.


De manera similar contestamos la pregunta: ¿Contiene minúsculas nuestro texto?
En B8 disponemos del texto 'excelForo', sobre la que aplicamos
=NO(IGUAL(B8;MAYUSC(B8)))
De manera similar al razonamiento anterior, si comparamos el texto original con el tratado y modificado a todo en mayúsculas, y ambos son coincidentes, implica que el texto original está escrito todo en mayúsculas, y por tanto no contiene minúsculas.
Por contra, si NO coincide existiría al menos una letra minúscula.


La tercera pregunta: ¿Posición Primera Mayúscula en la celda?
Esta vez responderemos con una función matricial (recuerda: validamos presionando Ctr+mayusc+Enter).
Nuestra fórmula será, aplicada sobre B14:
=MIN(SI.ERROR(ENCONTRAR(CARACTER(FILA(INDIRECTO("65:90")));B14);""))

La clave aquí está en entender que con:
FILA(INDIRECTO("65:90")
obtenemos un listado de números entre 65 y 90.. ¿Por qué?, porque en código ANSI los caracteres del 65 a 90 responden a las letras del abecedario en mayúsculas!!. Lo que conseguimos con la función CARACTER:
CARACTER(FILA(INDIRECTO("65:90"))

Como ya tenemos las mayúsculas del alfabeto, aplicamos la función ENCONTRAR (que discrimina mayúsculas de minúsculas) para determinar la posición de dichas mayúsculas.

De todas las posibles coincidencias, i.e., de todas las posiciones de las mayúsculas encontradas nos quedamos con la posición mínima; o lo que es lo mismo, con la primera posición.


Finalmente, para contestar la última cuestión: ¿Cuál es la primera mayúscula de nuestra celda?
Nos podríamos aprovechar del cálculo anterior, de tal forma que si en B20 escribimos 'excelForo', en otra celda introducimos la fórmula matricial:
=EXTRAE(B20;MIN(SI.ERROR(ENCONTRAR(CARACTER(FILA(INDIRECTO("65:90")));B14);""));1)

es decir, extraemos un caracter desde la posición primera.

Una alternativa sería la también matricial:
=EXTRAE(B20;
COINCIDIR(1;
CODIGO(EXTRAE(B20;FILA(INDIRECTO("1:"&LARGO(B20)));1))>=65)*CODIGO(EXTRAE(B20;FILA(INDIRECTO("1:"&LARGO(B20)));1))<=90); 0); 1)


En este caso evaluamos caracter a caracter, verificando que su código ANSI esté entre 65 y 90 (ya comentado anteriormente, responde a las mayúsculas).


Como curiosidad, basándonos en esta última idea, podemos aplicar matricialmente sobre un rango D25:D31 la función:
=EXTRAE(B22;K.ESIMO.MENOR(SI.ERROR(ENCONTRAR(CARACTER(FILA(INDIRECTO("65:90")));B22);"0");FILA(INDIRECTO("1:"&LARGO(B22))));1)

logrando listar, de manera única y en cierto orden las mayúsculas contenidas en la celda.

Encontrar Mayúsculas y Minúsculas en Excel

3 comentarios:

  1. Buenas Ismael. ¿Cómo podría obtener una fórmula para determinar si en el texto de una celda todos los carácteres son mayúsculas (verdadero) y si contiene minúsculas(Falso)?

    ResponderEliminar
    Respuestas
    1. Hola!
      se me ocurre algo sencillo:
      =SI(celda=MAYUSC(celda);"Todo mayúscula";"Alguna minúscula")

      Espero te sirva
      Slds

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.