Saltar al contenido

Trienios y Quinquenios


Recommended Posts

publicado

Trienios-Quinquenios.xlsx
Hola a todos, he buscado por los mensajes del foro y he encontrado a alguien que tenía el mismo problema que tengo yo, de hecho, no se si trabajaremos incluso en el mismo sector. Resumiendo mucho sería, introduciendo en una celda la fecha inicial del mi contrato (Antigüedad), me devuelva en otra los trienios que tengo hasta lo que llaman fecha de maduración del trienio (31/12/96) y en otra los quinquenios que tengo desde que he cumplido el último trienio hasta la actualidad.


He encontrado esto en el foro:

https://ayudaexcel.com/foro/topic/21669-ayuda-con-error-al-salir-de-la-hoja-en-visual-¿-alguien-me-lo-puede-mirar/?do=findComment&comment=124990&_rid=174704

Parece que lo ha solucionado, pero no puedo abrir ninguna de las respuestas, los archivos *.rar me dan error (Cálculo Liquidación MA I.rar y Copia de Cálculo Liquidación III.rar)

publicado
Private Sub CommandButton1_Click()

    trienios = ""
    fechaactual = CDbl(Mid(TextBox1, 7, 4))
    antiguedad = CDbl(Mid(TextBox2, 7, 4))
    antiguedad = (antiguedad + 3)
    
    Do Until antiguedad > 2022
        trienios = trienios & Str(antiguedad) & " "
        antiguedad = (antiguedad + 3)
    Loop
    Hoja1.Cells(2, 3) = "Trienios  " & trienios
    
    quinquenios = ""
    antiguedad = CDbl(Mid(TextBox2, 7, 4))
    Do Until antiguedad >= fechaactual
        antiguedad = (antiguedad + 5)
        If antiguedad > fechaactual Then Exit Do
        quinquenios = quinquenios & Str(antiguedad) & " "
    Loop
    Hoja1.Cells(3, 3) = "Quinquenios  " & quinquenios
    
End Sub

 

publicado

Si he entendido bien creo que esto es lo que necesitas, es decir que partiendo de la fecha de hoy por ejemplo y con una antiguedad desde el 1/05/1987 nos muestre los trienios comprendidos entre dicha fecha y el 31/12/1996 y luego que muestre los quinquenios desde el último trienio a la fecha actual. Si es así con el archivo que te adjunte intenta modificarlo tu mismo en caso que no puedas dilo y te lo comparto modificado.image.thumb.gif.378e8aea2be1d0c2e39599f2a463478e.gif

publicado

Lo primero muchas gracias por tu interés, pero no me funciona bien, me salen todos los trienios hasta la actualidad y los quinquenios igual, habría forma de solo tener que introducir la antigüedad, que asuma por defecto la fecha de HOY.

Te explico, tengo una plantilla de Excel que es una nomina de las que me manda la empresa y me gustaría que con solo meter la fecha de la antigüedad, en la celda correspondiente, me devolviese en la celda de Trienios, 3 y en la celda Quinquenios, 5, o lo que corresponda a fecha del sistema.image.png.cc3c6a085cda66dd2142f7245d41dd91.png

publicado

Lo primero muchas gracias por tu interés, pero no me funciona bien, me salen todos los trienios hasta la actualidad y los quinquenios igual, habría forma de solo tener que introducir la antigüedad, que asuma por defecto la fecha de HOY.

Te explico, tengo una plantilla de Excel que es una nomina de las que me manda la empresa y me gustaría que con solo meter la fecha de la antigüedad, en la celda correspondiente, me devolviese en la celda de Trienios, 3 y en la celda Quinquenios, 5, o lo que corresponda a fecha del sistema.

publicado

SOLUCIONADO. Muchas gracias a los dos, desde hace años que arrastro este problema, acababa introduciendo siempre los trienios y los quinquenios a mano, para los primeros había encontrado una formula sencilla pero para los segundos solo =”dolor de cabeza asegurado”, así que muchas GRACIAS.

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

    • @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 
    • Podrías compartir tu solucion
    • Alguien me apoya a cerrar este tema,  ya lo solucioné 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.