Fechas automáticas según le indique en una celda

Supongamos que en una celda pongo un número de clases que voy a hacer este año. Por ejemplo 50, quiero indicarle también en otra celda, que día, mes y año empezaré el curso y en otra diferente indicar que días de la semana iré, por ejemplo lunes, miércoles y viernes, y automáticamente me devuelva las fechas del calendario que tendré clases, que cada fecha me la ponga en orden, en celdas diferentes de manera ascendente. ¿Es posible?

1 respuesta

Respuesta
1

Supongamos lo siguiente: En "A2" una fecha y en "B2" el número de clases. Luego vamos a colocar los días tomando en cuenta lo siguiente: 1 es lunes y 7 es domingo; por lo tanto nos interesan el 1 el 3 y el 5 y por eso en "C2" colocaremos lo siguiente: "1,3,5" (sin las comillas por favor). Vamos a suponer, también, que queremos los días de clase debajo del día inicial ("A1").

Luego, nuestra macro sería así:

Sub CompletandoDias()
Dim Numerodedia As Integer, RestoDias As Integer, x As Integer, y As Integer, Valor As Integer
Dim UltimaFila  As Long
Dim DiaD As Date
Dim Arraydedias As String, DiadeTrabajo() As String
Let DiaD = Range("A2")
Let Numerodedia = DateDiff("d", CDate("1/1/" & Year(DiaD)), DiaD) + 1
Let RestoDias = 365 - Numerodedia
Let Arraydedias = Range("C2")
DiadeTrabajo = Split(Arraydedias, ",")
For x = 1 To RestoDias
    Let DiaD = DiaD + 1
    For y = LBound(DiadeTrabajo) To UBound(DiadeTrabajo)
        If Weekday(DiaD, vbMonday) = DiadeTrabajo(y) Then
            Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
            Range("A" & UltimaFila + 1) = DiaD
            Let Valor = Valor + 1
        End If
    Next y
    If Valor = Range("B2").Value - 1 Then
    MsgBox "Listo"
    Exit Sub
    End If
Next x
End Sub

Si seguiste las instrucciones, tendrás el resultado esperado.

OJO, se puede mejorar haciendo que en "A2" solo se puedan ingresar fechar, en "B2" un número máximo de clases, que en "C2" máximo del 1 al 7, etc. pero eso ya queda en tus manos.

Salu2

Abraham Valencia

Muchas gracias, me va muy bien. Es posible que discrimine si es festivo? Creo que eso va a ser más complicado verdad?

De nuevo, gracias

Habría que agregar otro "If" y un probablemente un "Array" más ya que los días festivos varían por país, o sea, de poder, se puede pero en tus manos ya quedaría. Si lo vas intentando igual por aquí te vamos dando sugerencias.

De nada y un abrazo.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas