Saltar al contenido

Buscar y sumar valores distintos libros


misanme

Recommended Posts

publicado

Buenas tardes a todos.

En primer lugar dar la enhorabuena por este foro que, sin duda alguna, nos es de muchísima utilidad y que en más de en una ocasión nos ha sacado de un buen aprieto...

Os planteo lo que quiero hacer. Para ello os adjunto un archivo .zip de ejemplo para que la ayuda y mi explicación sea mucho más fácil. En dicho fichero podréis ver varios archivos excel y carpetas. En primer lugar, tenemos los archivos "USUARIOS" Y "TRABAJADORES" que sirven como base de datos para dar una referencia a cada usuario y trabajador. Por otro lado, está la carpeta "SEMANAS" en la que incluyo un fichero excel por cada trabajador que es el cuadrante mensual de cada uno de ellos. También hay una carpeta que se llama "RESUMENES", en el que está el fichero "RESUMEN POR USUARIOS". Este último fichero va a ser un resumen en el que indique las horas totales que cada trabajador dedica a cada usuario por semana.

Lo que quiero desarrollar es un macro que me permita en el archivo "RESUMEN POR USUARIOS", buscar en cada archivo de cada trabajador el número de horas totales por semana de cada usuario. Los pasos a seguir por el macro serían algo así:

1. Abro el archivo de cada trabajador.

2. Voy a la hoja RESUMEN de cada uno de los archivos.

3. En la hoja RESUMEN busco la referencia del usuario (indicada en la primera celda de la tabla RESUMEN POR USUARIOS).

4. Una vez que encuentro al usuario localizo la semana (indicada en la primera celda de la tabla RESUMEN POR USUARIOS).

5. Copio el valor. En el caso de encuentrar un usuario en varios archivos de trabajadores, se sumarían las horas, indicando en la tabla RESUMEN POR USUARIOS la suma de cada trabajador.

Esto habría que realizarlo semana por semana y usuario por usuario.

En el ejemplo sólo hay dos trabajadores, pero imaginaros que son 50 trabajadores, que conlleva 50 archivos distintos.

Con sólo dos archivos, es fácil hacer lo que quiero con BUSCARV,, pero al tener 50 archivos distintos es larguísimo y pesadísimo...Por eso quiero desarrollar el macro que me permita hacer todo de forma automática...

Como podéis ver, siempre se utiliza la hoja RESUMEN del archivo de cada trabajador.

No sé si me he explicado muy bien... Espero recibir vuestra ayuda.

Un saludo.

BUSQUEDA Y SUMA VALORES DISTINTOS LIBROS.rar

BUSQUEDA Y SUMA VALORES DISTINTOS LIBROS.rar

publicado

He conseguido realizar un macro que me haga una hoja resumen. El problema es que no sé como podría sumarlos totales de los usuarios que hay en varios archivos. Por ejemplo, en el archivo que os adjunto, en el resumen me aparece el usuario05 dos veces, y el usuario07 otras dos veces. Yo quisiera que la macro me sumara los valores de los totales de los usuarios repetidos en varios archivos y los mostrara como sólo uno.

También deciros que la macro me copia y pega los valores en las columnas A a F. ME gustaría que en la columna F se produjera la suma tal y como se puede ver en el archivo adjunto de forma automática, para no tener que hacerla yo manualmente.

Un saludo! Muchas gracias a todos!

RESUMEN VARIOS LIBROS.rar

RESUMEN VARIOS LIBROS.rar

  • 3 weeks later...
publicado
He conseguido realizar un macro que me haga una hoja resumen. El problema es que no sé como podría sumarlos totales de los usuarios que hay en varios archivos. Por ejemplo, en el archivo que os adjunto, en el resumen me aparece el usuario05 dos veces, y el usuario07 otras dos veces. Yo quisiera que la macro me sumara los valores de los totales de los usuarios repetidos en varios archivos y los mostrara como sólo uno.

También deciros que la macro me copia y pega los valores en las columnas A a F. ME gustaría que en la columna F se produjera la suma tal y como se puede ver en el archivo adjunto de forma automática, para no tener que hacerla yo manualmente.

Un saludo! Muchas gracias a todos!

Buenos dias compañero y sorry por colgarme al tema, soy nuevo y no se como crear

un nuevo tema.

Quisiera pedirles de favor me ayuden con el archivo

adjunto, mi caso es que tengo una planilla de 1000 trabajadores y tengo que ordenarlos en 400 ordenees de trabajo

distintas.

Adjunto el archivo con la planilla y dos tipos de trabajo, espero me puedan ayudar.

Gracias de antemano por la ayuda icon_biggrin.gif

consultar_buscar_v_varios_valores.rar

consultar_buscar_v_varios_valores.rar

publicado

No se puede utilizar el tema de otro usuario para solicitar colaboración de otro tema.......normas del foro.......

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.