martes, 14 de diciembre de 2021

Dígitos, minúsculas, mayúsculas y otros caracteres

Una vuelta de tuerca al asunto de recuperar únicamente los dígitos, o las mayúsculas, o las minúsculas... o a caso cualquier otro caracter distintos de los anteriores.
Al hilo de las publicaciones pasadas:
Recuperar caracteres no numéricos
Recuperar caracteres numéricos
Mi colega Rick Rothstein (también MVP Excel) me recordó algunas alternativas para obtener de otra forma caracteres de texto o dígitos... lo que me llevó a este artículo.
Dígitos, mayúsculas, minúsculas y otros caracteres

Veamos las ideas propuestas por Rick para los tres primeros casos.

Para recuperar los dígitos de la cadena... en C2:C7 insertamos:
=LET(x;EXTRAE(B2;SECUENCIA(LARGO(B2));1);
          CONCAT(SI(ESNUMERO(ENCONTRAR(x;"0123456789"));x;"")))

Dígitos, mayúsculas, minúsculas y otros caracteres

Lo interesante de la propuesta es el uso de ENCONTRAR (recuerda que esta función discrimina mayúsculas de minúsculas) para localizar cada caracter en la secuencia indicada "0123456789".
El resto de la técnica es similar a lo expuesto en los artículos del blog indicados al inicio...

Para recuperar las mayúsculas de la cadena... en D2:D7 insertamos:
=LET(x;EXTRAE(B2;SECUENCIA(LARGO(B2));1);
      CONCAT(SI(ESNUMERO(ENCONTRAR(x;"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"));x;"")))

Dígitos, mayúsculas, minúsculas y otros caracteres
Identificamos cualquier letra del alfabeto en mayúsculas...

De igual forma para recuperar las minúsculas de la cadena... en E2:E7 insertamos:
=LET(x;EXTRAE(B2;SECUENCIA(LARGO(B2));1);
      CONCAT(SI(ESNUMERO(ENCONTRAR(x;"abcdefghijklmnñopqrstuvwxyz"));x;"")))

Dígitos, mayúsculas, minúsculas y otros caracteres

Y finalmente, siguiendo la filosofía de Rick) para recuperar cualquier otro caracter (que no sea ni letras ni dígitos) en F2:F7 añadimos:
=LET(x;EXTRAE(B2;SECUENCIA(LARGO(B2));1);
      CONCAT(SI(ESNUMERO(HALLAR(x;"0123456789abcdefghijklmnñopqrstuvwxyz"));x;"")))

Notemos como hemos empleado la función HALLAR en lugar de ENCONTRAR, para identificar mayúsculas y minúsculas indistintamente...
Dígitos, mayúsculas, minúsculas y otros caracteres


Lo interesante de esta metodología es lo sencillo que sería personalizar una secuencia de caracteres buscados ;-)

Una alternativa para recuperar la lista de otros caracteres, para otro tipo de mentes mas 'retorcidas', podría ser en G2:G7:
=LET(vPos;SECUENCIA(LARGO(B2));
xValor;EXTRAE(B2;vPos;1);
arrNoDigits;N(SI(ESNUMERO(ENCONTRAR(xValor;"0123456789"));xValor;vPos));
arrNoMayusc;N(SI(ESNUMERO(ENCONTRAR(xValor;"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"));xValor;vPos));
arrNoMinusc;N(SI(ESNUMERO(ENCONTRAR(xValor;"abcdefghijklmnñopqrstuvwxyz"));xValor;vPos));
arrOtros;SI(arrNoDigits*arrNoMayusc*arrNoMinusc;vPos;"");
CONCAT(SI.ERROR(EXTRAE(B2;arrOtros;1);"")))

Donde trabajamos por exclusión de caracteres, recuperando la posición en la cadena inicial, de todo aquello que no sea ni dígitos, ni mayúsculas, ni minúsculas!!

No hay comentarios:

Publicar un comentario

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