Tabella date



  • Tabella date
    di Ciano (utente non iscritto) data: 21/05/2012

    Salve dovrei creare in automatico una tabella come quella allegata, magari inserendo nella prima cella il primo intervallo di date e far in modo che tutte le altre celle si aggiornino secondo la sequenza giusta, magari adeguando anche l'anno.
    04/06/12 - 10/06/12 10/06/12 - 16/06/12 16/06/12 - 22/06/12 22/06/12 - 28/06/12 28/06/12 - 04/07/12
    04/07/12 - 10/07/12 10/07/12 - 16/07/12 16/07/12 - 22/07/12 22/07/12 - 28/07/12 28/07/12 - 03/08/12
    03/08/12 - 09/08/12 09/08/12 - 15/08/12 15/08/12 - 21/08/12 21/08/12 - 27/08/12 27/08/12 - 02/09/12
    02/09/12 - 08/09/12 08/09/12 - 14/09/12 14/09/12 - 20/09/12 20/09/12 - 26/09/12 26/09/12 - 02/10/12
    02/10/12 - 08/10/12 08/10/12 - 14/10/12 14/10/12 - 20/10/12 20/10/12 - 26/10/12 26/10/12 - 01/11/12
    01/12/12 - 07/12/12 07/12/12 - 13/12/12 13/12/12 -19/12/12 19/12/12 - 25/12/12 25/12/12 - 31/12/12
    31/12/12 - 06/01/13 06/01/13 -13/01/13 13/01/13 - 20/01/13 20/01/13 - 26/01/13 26/01/13 - 01/02/13
    01/02/13 - 06/02/13 06/02/13 - 12/02/13 12/02/13 - 18/02/13 18/02/13 - 24/02/13 24/02/13 - 02/03/13
    02/03/13 - 08/03/13 08/03/13 - 14/03/13 14/03/13 - 20/03/13 20/03/13 - 26/03/13 26/03/13 - 01/04/13
    01/04/13 - 07/04/13 07/04/13 - 13/04/13 13/04/13 - 20/04/13 20/04/13 - 26/04/13 26/04/13 - 02/05/13
    02/05/13 - 09/05/13 09/05/13 - 15/05/13 15/05/13 - 21/05/13 21/05/13 - 27/05/13 27/05/13 - 02/06/13
    02/06/13 - 09/06/13 09/06/13 - 15/06/13 15/06/13 - 21/06/13 21/06/13 -27/06/13 27/06/13 - 03/07/13
    03/07/13 - 07/07/13 07/07/13 - 13/07/13 13/07/13 - 20/07/13 20/07/13 - 26/07/13 26/07/13 - 01/08/13
    l'impaginazione non è venuta bene ma spero sia comprensibile. si tratta di una serie di turni con data di inizio (6 gg) e data di termine.
    grazie



  • di Baz (utente non iscritto) data: 22/05/2012

    Ciao ciano,
    innanzitutto volevo sapere il motivo per cui le seguenti date non mi sembrano +6 della precedente:
    7^, 8^, 10^, 11^, 12^, 13^


    a seguito il codice per creare tale tabella (come già detto a me risultano altre date...)

    come dalle note, ho iniziato dalla riga 2 analizzando fino all'ultima con dati

    nella colonna a ho supposto tu inserisca sia 1 singola data che le 2 date separate da spazio trattini spazio; in ogni caso la seconda data viene ricalcolata per sicurezza

    fai spaere se ti va bene il codice vba o preferivi formule, non l'avevi indicato.

    ciao

     
    Sub CalcolaTurni()
    Dim myData, c, r
    Dim myStr
    c = 1
    
    'eseguo un ciclo partendo dalla 2^ riga fino all'ultima cella con dati
    For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        'verifico se è una singola data
        If IsDate(Cells(r, c)) Then
            myData = Cells(r, c)
        Else
            'in caso contrario estraggo la 1^ data, la seconda la ricalcolo
            myData = CDate(Split(Cells(r, c), " - ")(0))
        End If
        
        For c = 1 To 5
            'inserisco le date partendo dalla prima colonna ed aggiungendo 6 giorni
            Cells(r, c) = myData & " - " & DateSerial(Year(myData), Month(myData), Day(myData) + 6)
            
            'ricarico la variabile
            myData = DateSerial(Year(myData), Month(myData), Day(myData) + 6)
        Next c
        c = 1
    Next r
    
    MsgBox "Fine elaborazione"
    
    End Sub
    



  • di Ciano (utente non iscritto) data: 22/05/2012

    Ciao, grazie della cortese risposta.
    hai perfettamente ragione non corrispondono c'è un errore.
    in pratica la tabella serve ad individuare il periodo di reperibilità dei vari turni.
    ritengo che comunque tu abbia compreso quello che dovevo fare.
    personalmente avrei risolto inserendo formule su più celle ovvero: a1 data, in b1 =a1+6, poi in c1 =b1 e in d1 =c1+6 e così di seguito.
    io volevo avere le due date dell'intervallo temporale in una unica cella es: in a1 04/06/2012 - 10/06/2012 in b1 10/06/2012 - 16/06/2012 e così a seguire.
    per il vba non sono pratico preferisco sicuramente le formule.
    comunque ti rigrazio tantissimo
    cordialmente graziano



  • di Baz (utente non iscritto) data: 23/05/2012

    Ciao,
    averlo saputo prima ...

    partendo dala cella a2 con le 2 date separate da spazio trannino spazio
    prova mettere in b2 la formula

    poi trascina...

     
    =CONCATENA(TESTO(DATA(ANNO(STRINGA.ESTRAI(A2;1;TROVA(" - ";A2;1)));MESE(STRINGA.ESTRAI(A2;1;TROVA(" - ";A2;1)));GIORNO(STRINGA.ESTRAI(A2;1;TROVA(" - ";A2;1)))+6);"gg/mm/aaaa");" - ";TESTO(DATA(ANNO(STRINGA.ESTRAI(A2;1;TROVA(" - ";A2;1)));MESE(STRINGA.ESTRAI(A2;1;TROVA(" - ";A2;1)));GIORNO(STRINGA.ESTRAI(A2;1;TROVA(" - ";A2;1))+12));"gg/mm/aaaa"))



  • di Baz (utente non iscritto) data: 23/05/2012

    Mmm speravo fosse puù leggibile mettendo la formula nel ocdice vba ... non ne sono + tanto sicuro, ma non volevo venissero persi dei caratteri

    spazio trattino spazio
    mi è partita la 'n' per errore



  • di Ciano (utente non iscritto) data: 23/05/2012

    Grazie molte ho applicato la formula che mi hai mandato e funziona alla grande, ho dovuto solo fare una modifica sulla posizione del +12)) +12)
    ti ringrazio inoltre perchè ho avuto modo di studiare come è stata strutturata e quindi capire tutti i vari passaggi.
    nuovamente tante grazie
    graziano



  • di Baz (utente non iscritto) data: 24/05/2012

    Bene!

    scopo secondario, se non primario, di un forum penso sia appunto quello di imparare, non solo di risolvere un problema.

    alla prossima
    ciao