jueves, 7 de marzo de 2013

Asociar palabras (2 de 3)

Siguiendo con el problema planteado en la entrada anterior, vamos a asignar a las frases de la columna B el nombre de la ciudad asociada a la palabra clave que contiene el texto.

Segunda solución

Comprobamos  si la frase de la celda B3 contiene alguna palabra clave.

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

Sustituimos los errores por FALSO y el número por VERDADERO.

Seleccionamos I3:I10 y escribimos:
=ESNUMERO($H$3:$H$10)     [Terminar con Ctrl + Mayús + Intro]

Determinamos en qué fila de la lista I3:I10 hay VERDADERO.

Seleccionamos J3:J10 y escribimos:
=($I$3:$I$10)*(FILA($E$3:$E$10)-FILA($E$3)+1)     [Terminar con Ctrl + Mayús + Intro

VERDADERO está en la fila 6. Aislamos ese valor en la celda K3.

En K3:
=SUMA($J$3:$J$10)      [Terminar con Intro]

Podría darse la circunstancia de que la frase no contuviera ninguna palabra clave, en cuyo caso, la fórmula de K3 devolvería cero. Hemos de tener en cuenta este supuesto para determinar el nombre de la ciudad asociada.

En L3:
=SI($K$3=0;"******";INDICE($F$3:$F$10;$K$3))      [Terminar con Intro]

Una vez desarrolladas todas las fórmulas (cinco columnas auxiliares), creamos en C3 la fórmula compuesta.

En C3:
=SI(SUMA((ESNUMERO(HALLAR($E$3:$E$10;$B3)))*(FILA($E$3:$E$10)-FILA($E$3)+1))=0;"******";INDICE($F$3:$F$10;SUMA((ESNUMERO(HALLAR($E$3:$E$10;$B3)))*(FILA($E$3:$E$10)-FILA($E$3)+1))))     [Terminar con Ctrl + Mayús + Intro]

Finalizamos extendiendo la fórmula hasta la fila 17.

Tercera solución

En la primera solución del artículo anterior usamos 7 columnas auxiliares; en la segunda solución, 5; y en ésta lo haremos con 4.

El primer paso es el mismo.

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

Mantenemos los errores y sustituimos el número (si existe) por un 1.

Seleccionamos I3:I10 y escribimos:
=SI($H$3:$H$10>0;1;0)     [Terminar con Ctrl + Mayús + Intro]

Comprobamos en qué fila de la lista I3:I30 está el número 1.

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

Usamos la función INDICE para determinar la ciudad asociada. Si J3 contiene un error, lo capturamos con SI.ERROR y devolvemos una lista de asteriscos.

En K3:
=SI.ERROR(INDICE($F$3:$F$10;$J$3);"******")     [Terminar con Intro]

Ponemos la fórmula definitiva en C3:
=SI.ERROR(INDICE($F$3:$F$10;COINCIDIR(1;SI(HALLAR($E$3:$E$10;$B3)>0;1;0);0));"******")     [Terminar con Ctrl + Mayús + Intro]

Extendemos la fórmula hasta la fila 17.

Cuarta solución

También con 4 columnas auxiliares, podemos resolver el problema modificando ligeramente el razonamiento.

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

En el segundo paso, sustituimos los errores por blancos, y el número por su posición en la lista H3:H10.

Seleccionamos I3:I10 y escribimos:
=SI(ESERROR($H$3:$H$10);"";FILA($F$3:$F$10)-2)     [Terminar con Ctrl + Mayús + Intro]

En J3:
=SUMA($I$3:$I$10)     [Terminar con Intro]

En K3:
=SI($J$3=0;"******";INDICE($F$3:$F$10;$J$3))     [Terminar con Intro]

Escribimos la fórmula compuesta en C3:
=SI(SUMA(SI(ESERROR(HALLAR($E$3:$E$10;$B3));"";FILA($F$3:$F$10)-2))=0;"******";INDICE($F$3:$F$10;SUMA(SI(ESERROR(HALLAR($E$3:$E$10;$B3));"";FILA($F$3:$F$10)-2))))     [Terminar con Ctrl + Mayús + Intro]

Extendemos la fórmula hasta la fila 17.



No hay comentarios:

Publicar un comentario