Saltar al contenido

Copiar datos de varios archivos a un archivo resumen


Recommended Posts

publicado

Buen día a todos:

Estoy solictando apoyo para crear una macro que me permita copiar ciertos datos contenidos en archivos diarios (7) y concentralos en un archivo resumen (semanal). Es decir tengo 7 archivos que necesito abrir y pasar algunos datos especificos al archivo resumen.

Los datos en los archivos estan contenidos en filas (rangos) y no todas las filas tienen información. En el archivo resumen, solo deben copiarse las filas que tienen información para que aparezca un concentrado.

Les anexo 3 de los 7 archivos y el archivo resumen, como debe aparecer la información.

Por su amable atención y apoyo gracias

RESUMEN.xls

EVENTOS 030812.xls

EVENTOS 010812.xls

EVENTOS 020812.xls

publicado

Buenas, argaez2012

Creo que lo que pides es bastante sencillo, con la excepción de saber si existe alguna manera de conocer a qué día pertenece el fichero con la excepción del nombre.........es decir, ¿no aparece en tu archivos reales en ninguna casilla a qué día pertenece? ¿Se podría incluir esa información en ellos?

Con lo que respondas nos planteamos opciones.

Un saludo,

Tese

publicado

Buenas tardes. Antes que nada gracias por responder.

Efectivamente el archivo original contiene la fecha, solo que aqui presente la parte de ese archivo que me interesa manejar.

Los nombres de los archivos corresponde con la fecha. Ejemplo. Eventos 010812, son los dcatos del día 1 de agosto de este año. Por supuesto se le pueden incluir una celda donde vaya la fecha correspondiente.

Lo que no he podido lograr, es que en el concentrado solo aparezcan los rangos de celda que tiene información y descarte todo los que estan en blanco.

He pensado copiar de cada uno de los archivos los rangos completos (llenos y vacios), uno debajo de otro (los 7) y posteriormente eliminar en el resumen todas las filas vacias a fin de obtener el concentrado. Pero no se si esto sea lo adecuado o haya una forma más facil de lograrlo.

COMO COMPRENDERAN SOY NUEVO EN ESTE ASUNTO DE LAS MACROS.

De antemano gracias por todo el apoyo.

publicado

Bueno, pues como yo iba adelantando curro mientras respondías........jejejejej

Espero que la estructura real de columnas, etc.....sí sea la misma de los archivos ejemplo.....porque está basado en ella...

Al final lo del número lo he sacado del nombre del archivo......por suerte, cuando es 01, aparece 1......jejejeje, pero si fuera 13, esperemos que aparezca eso........

Si cambias los nombres de ficheros deberías retocarla...........me refiero a que no sean "EVENTOS ......." porque está pensada para poder ejecutarla incluso con otros ficheros Excel abiertos y que no tengan nada que ver con el tema...

Se ejecuta desde el fichero "RESUMEN" que te adjunto...........Abre tú los de ejemplo y después vuelves a "Resumen" y la lanzas.........Poner un botoncito en esta hoja para que sea más fácil lanzarla lo haríamos en un pis-pas....en caso de no saber tú cómo hacerlo.......no te preocupes....

Pruébalo y me dices.........

Chao,

Tese

RESUMEN.rar

publicado

Tese

Agradezco tu apoyo. La macro corre muy bien. De hecho si tienes razón existen otros detalles:

1) Los rangos de mis ejemplos no son la ubicación exacta en los archivos originales, en lugar de H3:AM13, es J117:AO127

2) De entrada todos los archivos EVENTOS, están cerrados, debo abrir cada uno, copiar la información y cerrar.

Pero con tu trabajo tratare de ajustarlo a lo que requiero.

Para abrir los archivos usare: Workbooks.Open Filename:= "....................." y luego cerrar.

Nuevamente gracias por el apoyo.

Saludos.

publicado

Buenas de nuevo, argaez2012

Ten cuidado con el tema de los rangos, porque como te he dicho la estructura está pensada para los que subiste de ejemplo...si sabes leer el código entonces imagino que sabrás qué retocar.....

Por otro lado, podrías, sin saber si todos los archivos EVENTOS están en la misma ruta, mediante código que los abra, tome datos y después cierre..........pero con tu línea de ejemplo no sé si pensabas hacerlo así ó incluir el nombre de cada archivo.....

Tú sabrás lo que necesitas.....

Si consideras que el tema está resuelto, no te olvides escribir algo así como "Tema Solucionado"....para que los administradores lo puedan cerrar.....

Un saludo,

Tese

Archivado

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

  • 109 ¿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
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • 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.