Imaginemos que tenemos en una hoja de cálculo (una Excel de toda la vida, aunque no me gusta llamarla por un nombre comercial, es como llamar a los yogures Danone o Gillette a las cuchillas de afeitar, en fin), una serie de datos (es muy importante el hecho de tener un identificador o referencia en cada fila). En esta misma hoja, queremos insertar datos que se encuentran en otro archivo de hoja de cálculo haciendo que los nuevos datos se correspondan con el autor de la primera hoja. Queremos cruzar o unificar los datos de las dos tablas en una sola.
Los escenarios que se nos presentan son muy variados, desde un simple listado como el que muestro en el ejemplo como una tienda donde tenemos que introducir información adicional de cientos de productos o un proyecto bibliográfico, etc.
En el ejemplo, se nos hace imposible copiar y pegar, ya que en la otra hoja, por un lado, aparecen los elementos desordenados, y por otra parte, hay elementos que no están en las dos tablas (puede que en una haya elementos que no estén en la segunda y viceversa). Los datos que vamos a utilizar para la segunda hoja son los siguientes:
Por un lado, es cierto que podemos ordenar los datos, pero lo malo es que hay elementos no coincidentes (incluso el número de elementos puede ser distinto).
En este ejemplo he creado una nueva hoja para el primer archivo y he copiado en esa hoja los datos de las fechas. Ahora, creamos la columna Años dentro de la primera hoja y en la segunda fila introducimos la siguiente fórmula:
=BUSCARV(A2;Hoja2.$A$2:$B$100;2;0)
Y extendemos la fórmula a todas las líneas (podemos hacer esto de forma rápida pulsando en la esquina inferior derecha del cuadro que aparece seleccionando dicha celda (cuando hay cientos o miles de filas esto es muy útil).
En la fórmula anterior, BUSCARV, buscará una fila con un criterio especificado y nos devolverá el valor de una celda:
- A2 nos dice qué tenemos que buscar. Como estamos en la segunda fila y la columna de interés es la primera (A), buscaremos ahí (cuando extendamos la fórmula, este valor irá cambiando: A3, A4, ...
- Hoja2.$A$2:$B$100 es dónde buscar. Es decir, buscamos en la Hoja2 (en mi caso se llama así, debemos poner el nombre de la hoja) en la matriz especificada: desde la primera columna segunda fila, hasta la segunda columna, fila 100. Por supuesto podemos poner muchas más columnas (sólo he usado dos en el ejemplo) y muchas más filas (puse un 100 como un número muy grande). Los signos de dólar son para que al extender la fórmula, ésta no cambie (y no cambien los números de fila). En esta matriz debemos incluir la columna que contiene los valores que queremos devolver.
- 2 indica la columna cuyo valor queremos mostrar (como queremos la segunda columna, B, ponemos un 2). Tenemos que tener cuidado porque si en la matriz empezamos por una columna distinta de la A, un 1 aquí indicaría esa columna.
- 0: Los valores no están ordenados, y por tanto se realizará una búsqueda exhaustiva. Si ordenamos previamente los valores en la Hoja2, las búsquedas serán mucho más rápidas.
Como primera aproximación está bien, aunque cuando un ID no se encuentra en la Hoja2, en la columna Años dentro de la primera hoja vemos un horrible #N/D. Para solucionar esto podemos hacer lo siguiente:
=SI.ND(BUSCARV(A2;Hoja2.$A$2:$B$100;2;0);"No hay datos")
En este caso, si no se encuentra el valor en la Hoja2 veremos un mensaje que dice: " No hay datos ".
Ahora, compliquemos un poco más esto e incorporemos el dato de la fecha al nombre del autor:
=SI.ND(CONCATENAR(B2;" (";BUSCARV(A2;Hoja2.$A$2:$B$100;2;0);")");B2)
Esto, colocará en una celda el nombre del autor (columna B) junto con la fecha entre paréntesis siempre que esté presente, si no lo está, mostrará el nombre del autor simplemente.
Dejo por aquí el archivo de ejemplo (formato ods, 49Kb) por si os resulta de ayuda.