miércoles, 10 de junio de 2009

Buscar la Pareja

Descargar el fichero: emparejar.xlsx

Hemos creado un caso que permite buscar la pareja correspondiente a una persona según una tabla de parejas. La novedada es que nos pueden dar cualquiera de las dos personas correspondiente a la columna de la derecha o de la izquierda, y nosotros debemos buscar la contraparte. Para ello utilizaremos la función DESREF.

La tabla de la izquierda tiene dos columnas Persona_1 y Persona_2 que establecen las parejas existentes. Estas columnas se nombran con nombres de rango: PER1 y PER2.

En la segunda tabla disponemos de dos columnas Pareja A y Pareja B. Todos los valores se generan con números aleatorios. Esto supone que al pulsar la tecla de función F9 cambian los valores de esta segunda tabla.

Veamos la columan Pareja A. En este caso se extrae el nombre de una persona de forma aleatoria sea de la primera o segunda columna de la tabla de datos. Se emplea la función:

=DESREF(ref;filas;columnas;alto;ancho)

Esta función tiene dos formas de trabajar:
  1. Si utilizamos los tres primeros argumentos, la función permite extraer un valor de una tabla comenzando a contar desde la celda ref, y desde ella bajando el número de filas indicado, y moviéndonos a la derecha el número de columnas indicado. Si las filas son negativas nos movemos hacia arriba. Si las columnas son negativas nos movemos hacia la izquierda.
  2. Si utilizamos los cinco argumentos, la función trabaja como una función matricial, y lo que extrae no es un valor sino un rango de valores. Este rango extraido tiene como esquina superior izquierda la definida por los tres primeros argumentos, tal y como se han definido antes, y el argumento alto y ancho indican la dimensión del rango extraido. Al ser una función matricial, en primer lugar se han de seleccionar las celdas donde la matriz devolverá su resultado, y finalmente se ha de validar con Control+Mayusculas +Intro.
En este caso se extrae un único valor, no utilizandose la vesión matricial.

La fórmula utilizada para la Pareja A es la siguiente:

=DESREF($A$4;ALEATORIO.ENTRE(1;6);ALEATORIO.ENTRE(1;2))

Esto permite extraer de forma aleatoria cualquier persona de la primera tabla, este en la columna de la izquierda o de la derecha.


Para determinar la Persona B disponemos de varios métodos. El primero de ellos utiliza la siguiente expresión, para la celda F6:

=SI(ESNUMERO(COINCIDIR(E6;PER1;0));BUSCARV(E6;TODO;2;0);DESREF($B$5;COINCIDIR(E6;PER2;0);0))


Se utiliza la función:

=ESNUMERO(valor)

determina si es número, respondiendo con VERDADERO o FALSO.

El segundo método utiliza la expresión, para la celda G6:

=SI(ESERROR(BUSCARV(E6;TODO;2;0));DESREF($B$5;COINCIDIR(E6;PER2;0);0);BUSCARV(E6;TODO;2;0))

La función:

=ESERROR(valor)

responde con VERDADERO o FALSO. Si detecta un error responde con VERDADERO, y considera que #N/A es un error. Existe otro función, =ESERR que no considera como error el valor #N/A.

Tanto el método 1 para la celda F6, como el método 2 para la celda G6 requieren copiar la fórmula hacia abajo para toda su columna. Vamos a buscar una alternativa con nombres de rango donde la fórmula se la misma para todas las celdas de su columna.

El método 3 trabaja con el rango ParejaA, lo que permite que la fórmula sea la misma para todas las celdas de la columna H. Su expresión es:

=SI(ESERROR(BUSCARV(ParejaA;TODO;2;0));DESREF($B$5;COINCIDIR(ParejaA;PER2;0);0);BUSCARV(ParejaA;TODO;2;0))

El método 4 es una variante del anterior que trabaja de forma matricial.


No hay comentarios:

Publicar un comentario en la entrada