Saltar al contenido

Idea para conciliar dos archivos


Recommended Posts

Buenas a todos

Les consulto lo siguiente:

Tengo dos archivos en los cuales concilio los movimientos de uno en el otro:

Ejemplo: ambos archivos tienen las mismas columnas: Fecha, numero e importe.

Lo que hago es lo siguiente:

igualo en variables cada uno de los campos del primer archivo (Fecha, numero, importe) y recorro con la propiedad offset en el segundo archivo buscando las mismas coincidencias (Fecha, numero, importe).

Cuando termino de recorrer el segundo archivo voy al primero y continuo con la siguiente fila de datos y asi sucesivamente.

En si, me funciona pero si los archivos son bastantes extensos, el proceso se demora.

A alguien se le ocurre alguna otra idea o ha hecho algo similar o hay alguna otra propiedad que quede mas funcional.

Agradezco desde ya sus colaboraciones

Saludos cordiales !

Enlace a comentario
Compartir con otras webs

Lo que hago es lo siguiente:

igualo en variables cada uno de los campos del primer archivo (Fecha, numero, importe) y recorro con la propiedad offset en el segundo archivo buscando las mismas coincidencias (Fecha, numero, importe).

Cuando termino de recorrer el segundo archivo voy al primero y continuo con la siguiente fila de datos y asi sucesivamente.

Concuerdo contigo... demasiado lento la forma de operar de la macro. Tenemos 3 campos en file1 y los mismos 3 campos en file2 pero vas uno por uno... recorriendo filas y columnas...

Se me ocurre que en una columna aparte podria concatenar la fecha, numero e importe en file1 y hacer lo mismo en file2, con esto solo tendria que recorrer fila tras fila hasta encontrar la coincidencia, reduciendo asi el tiempo de procesamiento.

Suerte, bye

Enlace a comentario
Compartir con otras webs

Hola Leonardo

Supongo usas un bucle tipo For i = 1 to ultimafila?... pero que obtienes de buscar y comparar tus datos entre libros? es decir que operas?

Tambien puedo sugerirte algo similar a la opcion de digitalboy pero con algo como CONTARSI concatenando en una columna auxiliar en los dos libros la fecha&numero&importe, no se a lo mejor nos perdemos porque no sabemos realmente cual es el objetivo!

Saludos

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

Hola! Leo (digital y Gerson).

¿A qué le llamas "archivos bastante extensos"?...

Y la segunda re-pregunta es: en las conciliaciones se trata de distinguir los datos coincidentes de los que no lo son: ¿Tienes -cómo bien acota Gerson- algún otro objetivo?...

Saludos, Cacho R.

Enlace a comentario
Compartir con otras webs

Buenas Digitalboy / Gerson / Cacho R !!

Antes que nada muchas gracias por sus tiempos !

Les cuento que no subi el archivo ya que la idea todavia esta en el papel.

Les aclaro lo siguiente:

Se trata de conciliar dos estados de cuentas (cliente y proveedor) con los campos que le comente, ambos informes tendrian que coincidir pero hay veces que en un informe un registro esta contabilizado en un fecha y en el otro con otra distinta pero coniciden en el resto de los campos (numero e importe).

Si bien la idea de concatenar se me ocurrio no me serviria 100% ya que quiero indicarle que en el campo del 1er informe fecha busque "x" dias para arriba y "x" dias para abajo de la fecha del primer informe.

Inicialmente se me ocurrio lo siguiente:

Estando en el primer informe voy a la primer celda con datos y ahi hago un: do while activecell <> empty, igualo en variables la fecha, numero e importe de esa fila.

Luego voy al segundo informe a la primer celda con datos y hago lo siguiente:

do while activecell <> empty

If activecell = primer_variable then

If activecell.offset(0,1) = segunda_variable then

If activecell.offset(0,2) = tercer_variable then

si se cumplen estas tres condiciones les hago una marca a la fila y salgo del bucle para volver al 1er informe y continuar la busqueda

end if

end if

end if

si no encontro nada sigo buscando una fila mas abajo y asi sucesivamente hasta que llegue al final del 2do listado

activecell.offset(1,0).activate

loop

y despues vuelvo al 1er listado, bajo una fila y continuo con la busqueda como indique arriba.

Le comentaba que la fecha podria ser variable por lo que cuando toma la fecha , por ej: 15/05 en el primer informe en el segundo pueda dar por valida 2 dias para arriba y 2 para abajo, o sea 17/05 y 13/05, por eso la idea de concatenar no me serviria del todo.

El codigo no esta nada completo como veran, es solo una muestra de la idea...

El objetivo del mismo es identificar rapidamente que esten contabilizados todos los movimientos y de forma correcta en ambos listados y que los mismos coincidan.

La extension de los archivos es de casi 500 registros (filas) en cada informe por lo que la forma que lo planteo se me hace bastante lenta la ejecucion.

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

Por lo que has descrito, Leonardo: ¿Es correcto afirmar que el campo 'Fecha' no tiene la menor relevancia?...

¡Es más!... No sé que significado administrativo tiene el campo 'Número'. Pero si es un número de operación (que por lo tanto es único): ¿Es correcto afirmar que tampoco el campo importe tiene relevancia?...

En otras palabras: ¿Podría darse que tengas asociado a un número de operación (si es que es un número de operación, claro está) un desglose del importe?. En tal caso: ¿De qué lado está el importe total y de que lado están los importes desglosados?...

Un comentario más:

¿Te has dado cuenta que si hubieses subido -desde un inicio- tu archivo de muestra, ninguna de estas re-preguntas serías necesarias pues estarían respondidas en el propio archivo de muestra?...

Mmmmm.. ¡¡¡ Diría que ya es hora que lo subas al Foro !!!, y aprovecha a mostrar cual es el resultado que esperas obtener.

Enlace a comentario
Compartir con otras webs

Buenas Cacho R

Ok a tu indicacion del archivo, pero como comentaba, no tenia nada armado todavia ya que estaba esperando si de esta forma me podian orientar.

Hacemos lo siguiente, creo uno a partir de la idea que tengo y lo subo !

Gracias por la ayuda !!

Saludos

Enlace a comentario
Compartir con otras webs

Por lo que has descrito, Leonardo: ¿Es correcto afirmar que el campo 'Fecha' no tiene la menor relevancia?...

¡Es más!... No sé que significado administrativo tiene el campo 'Número'. Pero si es un número de operación (que por lo tanto es único): ¿Es correcto afirmar que tampoco el campo importe tiene relevancia?...

En otras palabras: ¿Podría darse que tengas asociado a un número de operación (si es que es un número de operación, claro está) un desglose del importe?. En tal caso: ¿De qué lado está el importe total y de que lado están los importes desglosados?...

Un comentario más:

¿Te has dado cuenta que si hubieses subido -desde un inicio- tu archivo de muestra, ninguna de estas re-preguntas serías necesarias pues estarían respondidas en el propio archivo de muestra?...

Mmmmm.. ¡¡¡ Diría que ya es hora que lo subas al Foro !!!, y aprovecha a mostrar cual es el resultado que esperas obtener.

Cacho! tu tambien escribes mucho jaja (en resumen es sube un archivo), Excel no necesita papel para operar

Saludos

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

Además de subir un archivo, Leo, ten la precaución de no omitir mostrar -en ese archivo- ninguno de los puntos que te he mencionado como importantes.

Precisamente te los he puntualizado para que no subas un archivo "pelado" con -tan sólo- un par de datos poco relevantes.

Enlace a comentario
Compartir con otras webs

Buenas nuevamente !

De acuerdo a sus instrucciones y normas del foro les paso el archivo ...

Cacho R

Con respecto a tus puntualizaciones:

Campo FECHA, quiero controlarlo para evitar que la registracion no sea diferente a un mes determinado, ej, para la liquidacion de impuestos.

Campo IMPORTE, tambien es importante ya que la idea es comprobar que un NUMERO de comprobante (que es único) esta en ambos informes de igual (o casi) forma.

De todas formas en el archivo se explica mejor la idea.

Como siempre cualquier orientacion al respecto sera bienvenida.

Saludos

Sistema.xls

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

Veamos un par de temas que -aún- están un poco "sucios" conceptualmente hablando:

1º) Hablabas de conciliar 3 columnas y vemos que muestras 4... ¿Tendrás alguna otra "sorpresa" -en este sentido- en tu información real?

No necesito decirte que las macros y/o fórmulas se "complican" si las columnas no están donde uno supone que deben estar, ¿No? (jejeje)

2º) Fíjate que indicas:

Campo FECHA, quiero controlarlo para evitar que la registracion no sea diferente a un mes determinado, ej, para la liquidacion de impuestos.

No entendí que quisiste decir... Sin embargo, y a los efectos de la conciliación, sólo interesa que aún cuando las fechas puedan diferir en 1, 2 ó 3 días, el resto de los campos deberán ser iguales: ¿Estamos de acuerdo en esto?...

3º) Lo que sigue es lo menos "claro":

Campo IMPORTE, tambien es importante ya que la idea es comprobar que un NUMERO de comprobante (que es único) esta en ambos informes de igual (o casi) forma.

La pregunta es: Si el Nº de comprobante es único, entonces, ¿Por qué está repetido el Nº 5000 (celdas D18 y D20)?

Además: ¿En que estás pensando cuando afirmas "en (casi) igual forma"? (pon un ejemplo de esto, por favor).

Saludos, Cacho R.

Enlace a comentario
Compartir con otras webs

Buenas Cacho R

Gracias por tu tiempo nuevamente.

Respondo tus dudas:

1) cierto que comente que eran 3 campos pero decidi incluir un 4to para un mayor control, NO hay mas campo que estos!

2) campo FECHA, me referia a que controlando 100% la exactitud de la fecha me aseguro que por ejemplo no haya un error de tipeo y quede en el informe 1 la fecha 10/05/2012 y en el otro 10/06/2012. Tambien como veras deje modificable la exactitud para que el usuario pueda "jugar" con los dias.

3) totalmente de acuerdo que el campo NUMERO es unico, eso fue una prueba que hice para ver que no me marcara ambos registros del informe 1 si en el informe 2 habia uno solo.

Cuando me refiero a casi igual (en el monto) es porque a veces puede surgir una pequeña diferencia que no es relevante:

Informe 1: monto: 100,01 - informe 2: monto 100,00 en este caso quiero darlo por valido.

Muchas gracias

Saludos !

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

Hola! Leo.

Te dejo una forma de conciliar la información.

He mantenido el cuadro de "tolerancias" para los cuatro campos involucrados, pero he modificado -un tanto- el procedimiento.

¿Te puede ser de utilidad?...

Saludos, Cacho R.

Sistema_1.xls

Enlace a comentario
Compartir con otras webs

Cacho R

Primeramente, muchas gracias por tu tiempo, es muy valorable la dedicacion que se ve le has invertido !!

La verdad que el trabajo esta excelente y me parecio muy buena la idea de como queda el informe final, separados los conciliados de los no conciliados.

Como veras y de acuerdo al codigo que te envie, se me va hacer un poco complicado entender el tuyo, jeje, de todas formas lo vamos a estudiar para sacar el mayor provecho posible.

Nuevamente gracias y un saludo cordial !!

Enlace a comentario
Compartir con otras webs

Invitado Cacho R

¡No te compliques la vida!... (jajajaja)

Simplemente: carga los datos en las dos tablas y deja que la macro se ocupe.

Te sugiero que vayas variando los valores de las cuatro toleracias que intervienen hasta encontrar márgenes que te sean de utilidad.

Saludos ,Cacho R.

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que hay que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
    • Sub RecorrerRangoC() Set hoja = ActiveSheet Set rango = hoja.Range("C2:C" & hoja.Cells(hoja.Rows.Count, "C").End(xlUp).Row) If rango.Cells.Count = 0 Then MsgBox "No hay datos en la columna C.", vbExclamation Exit Sub End If For Each celda In rango.SpecialCells(xlCellTypeVisible) celda.Select Application.Wait Now + TimeValue("00:00:01") Next celda End Sub Prueba y comenta
    • Gracias   Al final funciona con esta formula. =SI.ERROR(C5*BUSCARV(A$2;TablaReparto[#Todo];COINCIDIR(D5;TablaReparto[#Encabezados];));C5) En la celda C5 he puesto la OT. Es similar a lo que me das como solución. ¡Muchas gracias por la ayuda!  
    • Hola, Mejor que subas un archivo que contenga esas fórmulas, indicando qué resultados esperas conseguir. Así ayudas a quien quiera ayudarte; no le obligas a que reproduzca ese modelo, y de paso podrá ver cuál es el objetivo buscado con esa/s fórmula/s. Saludos,
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.