Saltar al contenido

Asignar la última fecha de inicio y fin de un proyecto


benjarc

Recommended Posts

publicado

Buenas o noches a todos y todas,

Hoy me he roto la cabeza y no he logrado hacer lo que quiero hacer... Os cuento para ver si me podéis echar una mano o quizás darme alguna luz que me ayude... Todo será bienvenido.

Tengo una tabla en donde se van añadiendo informes de proyectos. Los datos de los informes se van copiando en columnas, es decir, cada nuevo informe de un proyecto corresponde a una nueva fila. Los proyectos están identificados con su código por lo que podemos filtrar por el y ver todos los informes de ese proyecto.

Bien, en el primer informe de cada proyecto  se reporta la fecha de inicio y fin del proyecto y en los siguientes, si hay alguna modificación, las fechas de inicio y fin modificadas. Las fechas de inicio y fin iniciales y las modificadas ocupan columnas diferente. Puede haber informes sin fechas ya que no se han modificado las iniciales y se mantienen según lo previsto.

Lo que yo quiero hacer es que , en dos columnas nuevas, pueda insertar las últimas fechas de inicio y fin del proyecto y que estás me salgan en todas las filas (informes) correspondientes a ese proyecto. Por ejemplos, si de un proyecto se han presentado 8 informes, en el primero se han reportado las fechas de inicio y fin iniciales, en el cuarto se reportan las fechas de inicio y fin modificadas, y en el reto no hay más cambios de fechas, que en los 8 informes de ese proyecto pueda ver en dos columnas nuevas las fechas de inicio y fin más actualizadas, es decir, las del 4to informe.

Esas fechas las necesito para hacer una segmentación y poder conocer que proyectos están activos en un año concreto.

Espero haberme explicado... En cualquier caso me decís e intento poner un ejemplo de lo que tengo.

Mil gracias como siempre.

Saludos, benjarc.

 

publicado

Buenos días a todos y todas,

os comparto un ejemplo de lo que tengo. Las dos columnas J y K es lo que me gustaría obtener por fórmulas, yo he introducido los datos a mano de los resultados que debería obtener.

A ver si me podéis iluminar... estoy seguro que sí.

MIl gracias por adelantado.

Feliz viernes.

Saludos, Benjarc

Ejemplo.xlsx

publicado

Hola,

Revisa tu archivo adjunto, con una posible solución (columnas M y N), que sustituirían a las actuales J y K.

La fórmula-base está en M3, que puede copiarse horizontal y verticalmente hasta donde sea necesario. De la misma forma, en la fórmula he insertado el rango 3:150, que deberá ampliarse en caso necesario, si tu base de datos supera esa cifra.

Saludos,

Ejemplo (B).xlsx

publicado

Mil gracias Victor7.

¿sería posible si me explicas brevemente el uso que le has dado a la fórmula Buscar? Nunca la he utilizado con esos atributos y me encantaría entenderla.

Saludos, benjarc

Hace 7 horas, Victor7 dijo:

Hola,

Revisa tu archivo adjunto, con una posible solución (columnas M y N), que sustituirían a las actuales J y K.

La fórmula-base está en M3, que puede copiarse horizontal y verticalmente hasta donde sea necesario. De la misma forma, en la fórmula he insertado el rango 3:150, que deberá ampliarse en caso necesario, si tu base de datos supera esa cifra.

Saludos,

Ejemplo (B).xlsx 12.8 kB · 0 descargas

 

publicado

Hola de nuevo,

La función =BUSCAR localiza eficientemente el último registro (con o sin condiciones), que se encuentra en una base de datos. La fórmula más simplificada podría ser algo así (en tu archivo-ejemplo), si quisiéramos saber, por ejemplo, qué aparece a la derecha del último registro "ES3456" de la columna A:

=BUSCAR(2;1/(B3:B15=B3);C3:C15)

Dicho de otra forma, sería algo así como un =BUSCARV, pero que localizara NO la primera aparición, sino la última.

Con el resto de argumentos de la fórmula indicamos a Excel si debe buscar en D:E o en G:H, dependiendo de que aparezca [o no] un "Si" en la columna F.

Otra cosa (no sé si lo sabes), es que Excel dispone de una utilidad para analizar cómo trabaja las fórmulas: sitúate en la celda que quieras desgranar (por ejemplo M3 del archivo), ve a la hoja 'Fórmulas' y haz clic en 'Evaluar fórmula' (está en el apartado 'Auditoría de fórmulas'). En el cuadro de diálogo que te aparecerá, ve haciendo clic en 'Evaluar' e irás comprobando cómo trabaja Excel con la fórmula y cómo va desarrollando cada uno de sus apartados y argumentos en cifras o textos, hasta llegar a la resolución final. Suele ser una excelente ayuda para interpretar cualquier fórmula y entender el cómo y el por qué de sus pasos secuenciales hasta llegar al resultado.

Saludos,

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.