Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188

    [Excel '07] Treasformare Data in Giorno

    Salve a tutti,
    ho tre diverse colonne: nella prima inserisco una data numerica (17/07/2009) nella seconda dovrei far apparire il giorno (lunedì) e nella terza il numero della settimana (da 1 a 5) relativo alla data considerata. E' possibile fare tutto tramite funzioni di EXCEL o devo utilizzare qualche macro??
    Altra cosa, per evitare di scivere ogni volta tutti i giorni relativi al mese in esame, posso inserire la data nella prima casella e poi a cascata, mettendoli uno di sotto all'altro, lui mi tira fuori tutti i giorni relativi al mese in esame? Esempio:
    01/01/2009 <- INSERISCO IO
    02/01/2009 <- INSERISCE lui
    03/01/2009 <- INSERISCE lui
    ...
    31/01/2009 <-INSERISCE lui
    Naturalmente vorrei evitare di cliccare sulla casella e trascinarmi il bordo, in pratica deve fare tutto lui, io vorrei inserire solo il primo giorno o mese.
    mi sa che per quest'ultimo devo far partire la macro...
    Grazie a tutti


  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Come avevamo visto in un altro thread esiste la funzione giorno.settimana() che però restituisce un valore numerico e non letterale. Basta crearsi una funzioncina ad hoc.

    Apri l'editor vba, vai su inserisci => modulo e fai copia incolla di questa funzioncina che ti ho scritto.

    codice:
    Function giornolett(cella As Range)
    numerico = Application.WorksheetFunction.Weekday(cella.Value)
    Select Case numerico
    Case 2
    giornolett = "Lunedì"
    Case 3
    giornolett = "Martedì"
    Case 4
    giornolett = "Mercoledì"
    Case 5
    giornolett = "Giovedì"
    Case 6
    giornolett = "Venerdì"
    Case 7
    giornolett = "Sabato"
    Case 1
    giornolett = "Domenica"
    End Select
    End Function
    Potrai così usarla come una funzione nativa di excel semplicemente digitando

    =giornolett(a1)

    Per quanto riguarda il numero della settimana relativamente al mese non esiste una funzione predefinita di excel ma basta che scriva

    =INT((GIORNO(A1)-1)/7)+1



    edit. Per il giorno della settimana molto più semplicemente mi è venuto in mente che potresti fare (sempre inserendo il codice in un modulo)

    codice:
    Option Base 1
    
    Function giornolett(cella As Range)
    Dim giorni As Variant
    giorni = Array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato")
    giornolett = giorni(Application.WorksheetFunction.Weekday(cella.Value))
    End Function

  3. #3
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    nico sei una manna
    la funzione =INT((GIORNO(A1)-1)/7)+1 va alla grande.
    Per quanto riguarda il codice:
    codice:
    Function giornolett(cella As Range)
    Dim giorni As Variant
    giorni = Array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato")
    giornolett = giorni(Application.WorksheetFunction.Weekday(cella.Value))
    End Function
    però non sempre la prima casella è il lunedì.
    Esempio se prendi il 01/03/2009 qeusto capita di domenica, col codice da te postato mi compare il lunedì. Il giorno deve corrispondere alla data della colonna a fianco
    Comunque grazie la funzione di prima mi semplifica veramente le cose.


  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da leomac
    Esempio se prendi il 01/03/2009 qeusto capita di domenica, col codice da te postato mi compare il lunedì. Il giorno deve corrispondere alla data della colonna a fianco
    Se avevo messo "Option Base 1" un motivo ci sarà.
    Incolla anche quello in cima come ti avevo scritto e vedrai che funziona.

  5. #5
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    E' spreccato dirti che sei un grande??
    thx Nico


  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prego. Se vuoi evitare pure la fatica di trascinare verso il basso basta che usi questo sistema.

    Modifica la formula

    =giornolett(a1)

    in

    =SE(A1<>"";giornolett(A1);"")

    a questo punto fai copia, selezioni tutte le celle sottostanti in cui vuoi che venga calcolato il giorno, incolla speciale e scegli Formule.

    In questo modo quando inserirai una data ti apparirà nella cella adiacente il giorno, in caso contrario non apparirà nulla.

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Avevo sentore che fosse assurdo dover ricorrere al vba solo per sapere il nome del giorno della settimana e infatti è bastata una rapida ricerca su google per averne conferma.

    Molto semplicemente fai

    =TESTO(A1;"gggg") e amen.


  8. #8
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    noco thx ancora ma credo che sia meglio con la macro postata prima con "aggiornamento"

    =SE(A1<>"";giornolett(A1);"")

    Difatti col

    =TESTO(A1;"gggg")

    il nome del giorno mi esce lunedì cioè senza maiuscola la prima lettera...
    Quindi se vogliamo prorpio guardare il capello, meglio la macro. Poi tanto VBA lo devo per forza usare per altro quindi...


  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da leomac
    noco thx ancora ma credo che sia meglio con la macro postata prima con "aggiornamento"

    =SE(A1<>"";giornolett(A1);"")

    Difatti col

    =TESTO(A1;"gggg")

    il nome del giorno mi esce lunedì cioè senza maiuscola la prima lettera...
    Quindi se vogliamo prorpio guardare il capello, meglio la macro. Poi tanto VBA lo devo per forza usare per altro quindi...

    Per rendere maiuscola la prima lettera basta che usi l'apposita funzione

    =MAIUSC.INIZ(TESTO(A1;"gggg"))


  10. #10
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    Bhè a questo punto... uso la funzione qui sotto e abbandono la macro

    =SE(A1<>"";MAIUSC.INIZ(TESTO(A1;"gggg"));"")


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.