viernes, 12 de junio de 2020

EXCEL: Clasificar texto con palabras clave

Excel formula: Categorize text with keywords

Fórmula genérica

{=INDICE(categories,COINCIDIR(VERDADERO,ESNUMERO(HALLAR(keywords,text)),0))}

Explicación

Para clasificar el texto usando palabras clave con una coincidencia "contiene", puede usar la función HALLAR, con la ayuda de INDICE y COINCIDIR. En el ejemplo que se muestra, la fórmula en C5 es:

{=INDICE(categories,COINCIDIR(VERDADERO,ESNUMERO(HALLAR(keywords,B5)),0))}

donde palabras clave es el rango con nombre E5: E14, y las categorías es el rango con nombre F5: F14.

Nota: esta es una fórmula de matriz y debe ingresarse con control + shift + enter.

Cómo funciona esta fórmula

En el fondo, esta es una función INDICE y COINCIDIR.

Dentro de la función COINCIDIR, utilizamos la función HALLAR para buscar celdas en la columna B para cada palabra clave listada en las palabras clave de rango con nombre (E5: E14):

HALLAR(keywords,B5)

Debido a que estamos buscando varios elementos (en las palabras clave de rango con nombre), obtendremos múltiples resultados como este:

{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;24;#VALUE!;#VALUE!;#VALUE!}

El #VALOR! se produce un error cuando HALLAR no puede encontrar el texto. Cuando HALLAR encuentra una coincidencia, devuelve un número que corresponde a la posición del texto dentro de la celda.

Para cambiar estos resultados a un formato más utilizable, utilizamos la función ESNUMERO, que convierte todos los valores a VERDADERO / FALSO de la siguiente manera:

{FALSO;FALSO;FALSO;FALSO;FALSO;FALSO;VERDADERO;FALSO;FALSO;FALSO}

Esta matriz entra en la función COINCIDIR como lookup_array, con lookup_value establecido como VERDADERO. COINCIDIR devuelve la posición del primer VERDADERO que encuentra en la matriz (7 en este caso) que se proporciona a la función INDICE como row_num:

=INDICE(categories,7)

INDICE devuelve el séptimo elemento en categorías, "Auto", como resultado final.

Con BUSCARX

Con la función BUSCARX, esta fórmula puede simplificarse un poco. BUSCARX puede utilizar la misma lógica utilizada dentro de la función COINCIDIR anterior, por lo que la fórmula equivalente es:

=BUSCARX(VERDADERO,ESNUMERO(HALLAR(keywords,B5)),categories)

BUSCARX localiza el primer VERDADERO en la matriz y devuelve el valor correspondiente de las categorías.

Prevenir falsas coincidencias

Un problema con este enfoque es que puede obtener coincidencias falsas de las subcadenas que aparecen dentro de palabras más largas. Por ejemplo, si intenta hacer coincidir "dr", también puede encontrar "Andrea", "drink", "dry", etc., ya que "dr" aparece dentro de estas palabras. Esto sucede porque HALLAR automáticamente hace una coincidencia "contiene".

Para un truco rápido, puede agregar espacio alrededor de las palabras de búsqueda (es decir, "dr" o "dr") para evitar atrapar "dr" en otra palabra. Pero esto fallará si "dr" aparece primero o último en una celda, o aparece con puntuación, etc.

Si necesita una solución más precisa, una opción es normalizar el texto primero en una columna auxiliar, teniendo cuidado de agregar también un espacio inicial y final. Luego puede buscar palabras completas rodeadas de espacios.


Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT