miércoles, 2 de diciembre de 2009

Búsqueda de diferencias en una base de datos en Excel.

Solicita ayuda un lector para localizar las diferencias entre dos bases de datos en Excel 2007:

...tengo dos archivos en excel 2007, en uno tengo miles de datos con los cuales yo siempre trabajo, mas sin embargo cada mes recibo otro archivo excel 2007 con los cambios de algunos cientos o miles de datos que tengo que pasar en una nueva columna del primer archivo.
Aqui el punto es que no todos cambian y los que cambian estan saltados, es decir cambia un solo dato de la fila 20 y el siguiente dato que cambia esta en la fila 524 y la siguiente en la 530 etc. osea no hay un orden.
Y para pasar dato por dato es muy dificil para mi, pues tengo que hacer copiar el dato a buscar en el primer archivo, buscar en el segundo archivo y ya encontrado copiar los cambios y pegarlos en el primer archivo y asi hasta 1500 veces, me tardo una eternidad.


Partiremos de las siguientes hojas a comparar; observamos que exiten registros nuevos y modificaciones sobre algunos de los exitentes:


Para facilitar el trabajo, en primer lugar copiaremos la Hoja nueva en el mismo Libro donde se encuentre la bases de datos original de trabajo. Observamos cómo existen algunas diferencias, es decir, algunas modificaciones de campos y otros se mantienen sin cambios, además de un posible caos en la ordenación.
El fin de este ejercicio es encontrar, marcar y adjuntar todos esos cambios.
La primera parte es sencilla, y la podemos realizar de dos maneras, una de ellas es dando un formato condicional con fórmula sobre la hoja de cada mes nueva; para ello necesitamos Asignar nombres a todos los campos de nuestras bases de datos (origen y nueva):
Código ='Hoja Base'!$A$2:$A$11
CódigoNuevo ='Nueva mes'!$A$2:$A$11
Concepto ='Hoja Base'!$C$2:$C$11
ConceptoNuevo ='Nueva mes'!$C$2:$C$11
Criterios ='Registros cambio'!$A$1:$D$5
Descripción ='Hoja Base'!$B$2:$B$11
DescripciónNuevo='Nueva mes'!$B$2:$B$11
Precio ='Hoja Base'!$D$2:$D$11
PrecioNuevo ='Nueva mes'!$D$2:$D$11
para, una vez generados los nombres, crearr la siguiente fórmula que agregaremos a cada Formato condicional de la base de datos nueva:
=CONTAR.SI(Código;A2)<>0 que nos cuenta aquellos elementos del campo Código que no existen en la base de datos origen
=CONTAR.SI(Descripción;B2)<>0 que nos cuenta aquellos elementos del campo Descripción que no existen en la base de datos origen
=CONTAR.SI(Concepto;C2)<>0 que nos cuenta aquellos elementos del campo Concepto que no existen en la base de datos origen
=CONTAR.SI(Precio;D2)<>0 que nos cuenta aquellos elementos del campo Precio que no existen en la base de datos origen
Aplicados en el formato condicional con fórmula cada uno de ellos:


Lo que nos marcará con un formato de colores qué elementos de cada campo se encuentran repetidos, y por exclusión cuáles son nuevos, que era lo que queríamos conocer.
Adicionalmente podemos construir, al margen de nuestra base de datos nueva, unas fórmulas por cada campo que nos indique la misma situación de cambio o novedad; con una función similar a la empleada en el formato condicional. Combinando algunas de las funciones ya vistas en entradas anteriores llegamos a:
=SI(ESERROR(COINCIDIR(A2;Código;0));"Cambio!!!";"sin cambio")
en la que preguntamos que si no encuentra ninguna coincidencia del elemento A2 en el rango de datos 'Código' de la base de datos origen, nos lo advierta con el texto 'Cambio!!!', en caso contrario, es decir, que si ha encontrado un elemento igual en el origen nos confirme que 'sin cambio'.


Dependiendo del número de modificaciones o registros nuevos emplearemos una u otra, o quizá ambas al tiempo.
El siguiente paso es extraer, de nuestra base de datos nueva, todos aquellos registros que o son nuevos o han sufrido algún cambio. Emplearemos un Filtro avanzado sobre la base de datos nueva, pero extendiéndola también a esos campos adicionales obtenidos que nos indican si hay cambio o no. En nuestro ejemplo aplicaremos un filtro avanzado sobre el rango A1:I11, desde una hoja nueva de nuestro libro, accedemos al menú Datos > Grupo Ordenar y filtrar > Avanzadas


con lo que obtenemos sólo los registros que presenten algún cambio o los nuevos.


Adjunto fichero

Cambios entre hojas 2007
Cambios entre hoja...
Hosted by eSnips

No hay comentarios:

Publicar un comentario en la entrada