1. Esta comunidad utiliza cookies. Si continuas utilizando nuestra comunidad estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Pendiente Comparar masivamente archivos Excel

Tema publicado en 'Macros y programación VBA' iniciado por bartarg, 5 Jun 2012.

  1. bartarg

    bartarg Nuevo Usuario

    Reg:
    5 Jun 2012
    Mensajes:
    3
    Me Gusta recibidos:
    0
    Hola, esta es mi primer consulta y trataré de ser claro y conciso:

    Tengo 6000 archivos excel. Cada archivo contiene un libro y una hoja con datos.
    Cada hoja contiene dos columnas, en las que hay números enteros o con dos o más decimales
    Los datos están en A2 y B2 en adelante, ya que en la fila 1 están los encabezados de ambas columnas

    Esos 6000 archivos se están cargando nuevamente porque mi cliente pidió que hagamos graboverificación.

    La tarea es comparar todos los archivos y saber en qué celdas hay diferencias. No importa cuál es la diferencia, sino sólo saber en qué celdas los datos no son exactos. De ese modo, resolveremos manualmente las incidencias.

    Los 6000 archivos no están todos juntos sino en diferentes carpetas, pero en definitiva habrá dos juegos de carpetas y subcarpetas iguales, conteniendo archivos Excel que se llaman igual y que deberían tener el mismo contenido.

    Hay alguna forma de detectar estas diferencias en forma masiva? he visto programas que lo hacen pero sólo unitariamente lo cual hace el trabajo terriblemente tedioso.

    Muchas gracias!
    Saludos
    Bart
     
  2. Cacho R

    Cacho R Incondicional de Ayuda Excel

    Reg:
    18 Jul 2011
    Mensajes:
    1.305
    Me Gusta recibidos:
    38
    Hola! bartarg. Te comento lo que se desprende de tu descripción:

    a) Dos carpetas que contienen (cada una de ellas) 3000 subcarpetas.

    b) En cada subcarpeta un archivo excel

    c) Los 6000 archivos excel se llaman igual

    Si esto es así: ¡Mejor!.
    De no serlo: ¡Explícate, por favor!

    El tema de las comparaciones está un tanto confuso.
    Imagina la siguiente simplificación: en lugar de dos columnas con datos, piensa que cada archivo SOLAMENTE tiene datos en la celda A1 (sólo una celda con datos por archivo).

    Piensa en 3 archivos: uno tiene el dato "A", el otro tiene el dato "B" y el tercero el dato "C".

    Así las cosas, entonces: ¿Cuál es la estructura informativa que pretendes obtener tras este proceso de comparaciones?...
    Trata de ser muy "clarito" en este punto pues en este esquema simplificado estamos comparando una sola celda. Pero, en el caso real: ¿Qué quieres comparar? ¿A2 de un archivo vs A2 de otro archivo? ¿B2 de un archivo vs B2 de otro archivo? ¿Y como quieres exponer el resultado de la comparación?

    Nuevamente te insisto: trata de ser muy descriptivo en el esquema informativo que pretendes obtener.

    Lo mejor será que subas al Foro un ejemplo concreto. Por ejemplo:

    - Tres archivos con no más de 5 filas cada uno (esto es para simplificar tu explicación)
    - Un archivo con el resultado final que deseas obtener

    Sin estas herramientas que te acabo de solicitar, será -casi- improbable que recibas algún tipo de orientación.
    Saludos, Cacho R.
     
    Última edición: 5 Jun 2012
  3. Macro Antonio

    Macro Antonio Incondicional de Ayuda Excel

    Reg:
    12 May 2010
    Mensajes:
    5.784
    Me Gusta recibidos:
    1.131
    Resumiendo, el tema no es demasiado difícil pero lo complica los siguientes temas:

    1) Llevar el control de que archivo se han tratado y de cuales no, porqué supongo que no pretenderás comparar lo 6000 archivos en el mismo proceso.

    2) El que los archivos se llamen igual, es un problema, porqué Excel no puede tener abiertos dos libros con el mismo nombre.

    3) Como llevar el control de las diferencias

    Soluciones:

    1) Llevar un archivo con el log de los procesos realizados.

    2) Renombrar todos los archivos, anteponiendo una letra al nombre. Pe. si existen dos archivos con el nombre MiArchivo.xls, ponerle a uno de ellos xMiArchivo.xls (Sencillo con una macro que lo haga masivamente)

    3) En un archivo de diferencias indicar Archivo, Fila, Valor 1 y Valor 2

    Es evidente que esto se trata de un proyecto, no de un problema puntual, ni de una consulta sobre un tema de una macro.

    Te recomiendo que sugieras a la dirección de tu empresa una dotación económica para este proyecto y lo ponga en manos de profesionales.

    Saludos
     
  4. bartarg

    bartarg Nuevo Usuario

    Reg:
    5 Jun 2012
    Mensajes:
    3
    Me Gusta recibidos:
    0
    Amigos, muchas, muchísimas gracias por ocuparse del asunto y sus respuestas. Lamento no haber sido claro. Trataré de serlo ahora.

    Quizás si les cuento el origan del problema tengan mejor idea: nuestro cliente nos contrató para hacer el data entry de unos expedientes que están en formato PDF manuscrito, y pidió pasarlos a archivos Excel. Son 6.000 expedientes. Hecho el trabajo se encontraron con errores típicos de la carga, que representan el 0,6% de lo cargado, pero un error en un dígito de una celda invalida todo el achivo. Entonces nos pidió error cero, para lo cual hay que volver a cargar todo por otro data entry, y comparar ambas cargas. De la comparación surgirán los errores, que se resolverán manualmente.

    Entonces son 6.000 archivos, que están en unas 40 carpetas, conteniendo en promedio 150 archivos cada carpeta, aunque hay carpetas de 5 archivos y otras de 500. Cada archivo Excel tiene una hoja con datos, y en la hoja hay dos columnas (adjunto una muestra) donde la línea 1 es el encabezado, y en las dos columnas hay únicamente cifras. El promedio es de 15 registros por archivo, aunque hay archivos con 5 registros y archivos con 150.

    Los 6.000 archivos ya fueron cargados, y ahora se están volviendo a cargar otra vez, para lo cual lo que hicimos fue con una macro vaciar una copia de los 6000 archivos y el segundo data entry está cargando sobre esos 6000 archivos vacíos.

    Entonces tendremos 2 carpetas, cada una conteniendo unas 40 subcarpetas, cada una conteniendo unos 150 archivos Excel, porque tendremos duplicado el trabajo original de 1 carpeta con 40 subcarpetas y sus 6000 archivos.

    Supongamos que tenemos entonces la carpeta A, con 40 subcarpetas de 1 a 40, y cada una conteniendo archivos (con nombres únicos)

    Pensando como un programador, yo haría esto: Abrir el archivo A532.xls que está en la subcarpeta 1 de la carpeta A.
    Abrir el archivo A532.xls que está en la subcarpeta 1 de la carpeta B.
    Me coloco en la celda A2 del primer archivo, y comparo el valor con la celda A2 del segundo archivo
    Bajo a A3 y hago lo mismo
    Sigo bajando hasta que encuentro el primer registro A vacío, que indica que el archivo terminó
    Hago lo mismo con la segunda carpeta, para comprobar que esa también terminó ahí.
    Me guardo los nombres de las celdas que no coincidían. Sólo interesa eso, porque lo que necesitamos saber es que no son iguales.
    Guardo ese resultado quizás en un nuevo archivo excel, que puedo llamar igual que el primero chequeado.

    Ante el problema de que los archivos se llaman igual, yo podría masivamente agregarle un dígito previo a los 6000 archivos de la segunda carga. De modo tal que el archivo A532.xls de la primera carpeta, podría llamarse 0-A532.xls en la segunda, y así poder abrirlos simultáneamente.

    Para simplificar la operación se podrían mover temporalmente las 40 subcarpetas a una carpeta de trabajo que podría ser C:/A/ para la primer carga y C:/B/ para la segunda, y voy haciendo el proceso por lotes de subcarpetas (serían 40 procesos aproximadamente)

    Disculpen si se hizo un poco largo! Estoy adjuntando el archivo muestra.zip con dos archivos excel para que puedan ver más o menos cómo son.

    Muchas gracias nuevamente por su ayuda.
    Saludos
    Bart
     

    Adjuntos:

  5. Cacho R

    Cacho R Incondicional de Ayuda Excel

    Reg:
    18 Jul 2011
    Mensajes:
    1.305
    Me Gusta recibidos:
    38
    Hola! bartarg (y Antoni).
    Si te he entendido correctamente, me parece que el proceso requiere de dos etapas:

    Etapa 1: Recopilación de la información.
    En una sola hoja Excel 2010/2007 podrías tener los -casi- 100.000 registros de un data entry y en otra hoja otros tantos registros del otro.

    Etapa 2: Comparación.
    Entiendo que esta parte es la más sencilla pues la información debería ser una "el calco" de la otra", salvo los errores.
    En este sentido un usuario estándar de Excel no tendría inconvenientes en establecer las diferencias.

    Así las cosas y para la Etapa 1, adjunto un sencillo (y "vulgar") proceso de consolidación de datos como los que tantas veces hemos visto por estos Foros.

    Coloca el archivo en la carpeta principal de uno de los data entry, o sea que tendrías: este archivo y las 40 subcarpetas en la misma posición, ¿OK?.

    Ejecuta la macro de consolidación y luego comentas...
    Saludos, Cacho R.
     

    Adjuntos:

  6. Macro Antonio

    Macro Antonio Incondicional de Ayuda Excel

    Reg:
    12 May 2010
    Mensajes:
    5.784
    Me Gusta recibidos:
    1.131
    Te adjunto un formulario que parte de las premisas expuestas en tu ultima exposición.

    Unos archivos en subcarpetas en C:\A\ y sus correspondientes en subcarpetas en C:\B\, en las mismas subcarpetas y con el mismo nombre. (No están abiertos a la vez).

    El proceso está montado por subcarpeta, cada proceso deja un archivo de control con el nombre Diferencias fechaHora.xls en la subcarpeta correspondiente.
     

    Adjuntos:

  7. bartarg

    bartarg Nuevo Usuario

    Reg:
    5 Jun 2012
    Mensajes:
    3
    Me Gusta recibidos:
    0
    Cacho, te agradezco mucho tu macro. La corrí (no para todos los registros) sino en subcarpetas y funciona perfectamente. El problema es que si el error es que en una de las cargas el data entry omitió cargar una línea, comienza a desacomodarse todo de ahí en adelante, y se me complicó bastante. De todos modos esa macro me viene muy bien para otros trabajos. Muchísimas gracias!

    - - - - - Mensaje combinado - - - - -

    Macro Antonio, probé la macro y funciona perfectamente. El informe que provee es exactamente lo que necesitaba, sólo saber en qué línea hay diferencias. Te agradezco muchísimo tu esfuerzo y dedicación.

    Estoy maravillado de la disposición que tienen todos ustedes, además de la capacidad para resolver cuestiones.
    El tema está resuelto entonces.

    Gracias!
     
  8. Cacho R

    Cacho R Incondicional de Ayuda Excel

    Reg:
    18 Jul 2011
    Mensajes:
    1.305
    Me Gusta recibidos:
    38
    Por esa situación (bastante esperable, dicho sea de paso) podrías abrir una nueva consulta, mostrar una parte de los datos que quieres comparar y "enterarte" como el COINCIDIR solucionaría tu dificultad.

    Esto sin perjuicio que -el tema de fondo- ya lo tienes solucionado por Antoni.
    Saludos, Cacho.
     

Compartir esta página