Sapere in quale settimana del mese cade un giorno



  • Sapere in quale settimana del mese cade un giorno
    di ZurilVBA (utente non iscritto) data: 11/07/2016 22:34:11

    Salve a tutti

    Ho un problema su cui mi sto scervellando da un po' di tempo:

    Ho un foglio di Excel 2010 dove vorrei che a seconda della data odierna, Excel mi vada ad identificare ed a scrivere i dati sulla riga della settimana corrispondete. Praticamente il mio programmino che sto realizzando funziona così: Ho un tasto che se premuto mi va ad incrementare il valore di 1 cella. Vorrei che quel valore venisse inserito nella cella corrispondente della settimana del mese in corso.

    Se si preme il tasto nella prima settimana del mese, Il valore si incrementa su C3.
    Se si preme il tasto nella seconda settimana del mese, Il valore si incrementa su C4.
    Se si preme il tasto nella terza settimana del mese, Il valore si incrementa su C5.
    Se si preme il tasto nella quarta settimana del mese, Il valore si incrementa su C6.
    e nel caso il mese abbia 5 Settimane, il valore deve incrementarsi su C7.

    La Settimana si chiude al Sabato.

    Grazie anticipatamente per l'aiuto. Se qualcosa non è chiaro, chiedete pure



  • di Vecchio Frac data: 12/07/2016 09:03:38

    Al volo, se non ho capito male, se ti serve sapere la settimana cui corrisponde una data, il metodo più semplice che io conosca è usare Format con l'apposito modificatore "ww":

    Format(Date, "ww") --> restituisce il numero di settimana della data odierna


    Il primo giorno della settimana è per default domenica quindi dovrebbe andare bene.






  • di patel data: 12/07/2016 09:04:08

    allega il file





  • di Luca73 data: 12/07/2016 09:22:43

    Ciao
    Prova con la macro sotto riportata
    Stavo per farla un po' più lunga ma poi ho trovato la funzione DateDiff che fa tutto lei.
    Guarda se i parametri fanno quello che vuoi.
    Ciao
    Luca 
     
    Sub prova()
    Dim RangeW
    Set RangeW = Range("C2").Offset(DateDiff("ww", CDate("01/" & Month(Date) & "/" & Year(Date)), Date, vbSunday, vbFirstJan1))
    RangeW = RangeW + 1
    End Sub
    






  • di Vecchio Frac data: 12/07/2016 09:33:13

    @Luca73
    Non ho ben capito il tuo codice.
    Comunque a rileggere, se a ZurilVBA serve il numero della settimana all'interno di un mese (cioè valori da 1 a 4 o da 1 a 5), io propongo il codice qui sotto.
    E' una Function che accetta una data e restituisce il numero della settimana all'interno del mese, dove trovasi detta data.
    Non testata completamente, ma dovrebbe funzionare.
     
    Option Explicit
    
    Function no_of_week_in_a_month(d As Date)
    Dim m As Date, dx As Date
    
        m = Format("1-" & Month(d) & "-" & Year(d))
        For dx = CDate(m) To CDate(m) + 7
            If Weekday(dx) = vbMonday Then Exit For
        Next
        
        no_of_week_in_a_month = (Day(d) + Day(dx))  7
    End Function






  • di Luca73 data: 12/07/2016 10:54:14

    Ciao Vecchio Frac
    cosa non è chiaro nel codice?
    In effetti non l'ho provato in dettaglio. in quanto funzione della data odierna.
    in effetti lo avevo scritto per contare da inizio anno poi l'ho modificato al volo.
    In teoria dovrebbe calcolare il numero di settimane da inizio mese e poi va ad incrementare di uno la cella della riga C spostata da C2 del numero di settimane.

    Fammi sapere cosa non capisci così la modifico (sicuramente data la tua esperienza e le tue conoscenze sono io che ho sbagliato qualcosa)

    In effetti c'era un errore ora l'ho corretto e mi sembra funzioni correttamente

    Ciao
    Luca
     
    Sub prova()
    Dim RangeW
    Set RangeW = Range("C3").Offset(DateDiff("ww", CDate("01/" & Month(MyDate) & "/" & Year(MyDate)), MyDate, vbSunday, vbFirstJan1), 0)
    RangeW.Value = RangeW.Value + 1
    End Sub





  • Grazie a tutti
    di ZurilVBA (utente non iscritto) data: 12/07/2016 10:57:35

    Grazie veramente di cuore a tutti. Ho usato l'ultima soluzione di @Luca73 e funziona alla grande. Siete stati davvero tutti molto cortesi e veloci a rispondere 😀 a presto.



  • di Vecchio Frac data: 12/07/2016 11:12:26

    @Luca73
    E' perchè non ho capito io la domanda iniziale :)
    Se ZurilVBA è soddisfatto, ottimo.
    La mia idea era che lui volesse sapere in quale settimana del mese si trovasse una certa data e la mia funzione restituisce questo valore (da farci poi ovviamente tutti gli spostamenti nel foglio necessari).





  • di Luca73 data: 12/07/2016 11:49:59

    @ Vecchio Frac peccato stavolta non ho imparato nulla dal maestro...

    @ ZurilVBA sono contento la prossima volta però allega un file che rendi a tutti le vita più semplice ed eviti fraintendimenti...

    Ciao

    Luca