lunes, 11 de marzo de 2013

Asociar palabras (3 de 3)

Veamos las dos últimas soluciones al problema de asociar nombres de ciudades con las frases que contienen palabras claves.

Quinta solución

Lo haremos con tres columnas auxiliares.

La primera columna auxiliar será parecida a la de los casos anteriores, pero introduciendo la novedad de incorporar el comodín asterisco (*).

Seleccionamos H3:H10 y escribimos:
=HALLAR("*"&$E$3:$E$10&"*";$B3)     [Terminar con Ctrl + Mayús + Intro]

("*"&$E$3:$E$10&"*") implica buscar cualquier palabra clave del rango E3:E10 precedida o seguida de cualquier número de caracteres. En el caso de que haya alguna coincidencia, la fórmula devolverá un 1.

Ahora, bastará buscar en qué fila del rango H3:H10 está ese 1.

En I3:
=COINCIDIR(1;$H$3:$H$10;0)     [Terminar con Intro]

Una vez que hemos determinado que hay coincidencia con el sexto elemento del rango H3:H10, usaremos la función INDICE para determinar la ciudad asociada. También contemplaremos la posibilidad de que no haya coincidencia y se haya producido error.

En J3:
=SI.ERROR(INDICE($F$3:$F$10;$I$3);"******")     [Terminar con Ctrl + Mayús + Intro]

Como siempre, pondremos la fórmula definitiva en C3.

En C3:
=SI.ERROR(INDICE($F$3:$F$10;COINCIDIR(1;HALLAR("*"&$E$3:$E$10&"*";$B3)));"******")     [Terminar con Ctrl + Mayús + Intro]

Finalizamos el ejercicio extendiendo la fórmula hasta la fila 17.

Sexta solución

La última solución será la más corta. Sólo requerirá dos columnas auxiliares.

Seleccionamos H3:H10 y escribimos:
=HALLAR($E$3:$E$10;$B3)     [Terminar con Ctrl + Mayús + Intro]

Si hay una palabra clave, en H3:H10 habrá un número (como ocurre en nuestro ejemplo). El truco consiste en utilizar la función BUSCAR para buscar no ese número sino uno mayor. La función BUSCAR tiene la particularidad de que si no encuentra el número buscado, se queda con el número más cercano que sea inferior al buscado. Usando el número 10300 nos aseguramos de que en la columna H no haya ninguno mayor.

En I3:
=SI.ERROR(BUSCAR(10^300;$H$3:$H$10;$F$3:$F$10);"******")     [Terminar con Intro]

Concluimos con la fórmula final.

En C3:
=SI.ERROR(BUSCAR(10^300;HALLAR($E$3:$E$10;B3);$F$3:$F$10);"******")     [Terminar con Intro y extender la fórmula hasta la fila 17]



2 comentarios:

  1. Muchísimas gracias Javier, excelente el material, me ha servido mucho en un cuadro que necesitaba para el trabajo. Sos un grande, de corazón te mando un saludo cordial desde Guatemala.

    ResponderEliminar
  2. Muchas gracias, Javier. Estoy haciendo mi Trabajo de Fin de Grado y me ha resultado muy útil tu información. ¡Un saludo!

    ResponderEliminar