View Full Version : EXCEL - Inserimento automatico data odierna in base a determinata condizione
diabolik1981
23-02-2009, 15:56
Come da titolo ho difficoltà nell'inserire la data odierna in una cella di EXCEL.
Mi spiego.
nella colonna A deve essere inserita la data odierna se nella colonna B (sempre stessa riga) la cella non è vuota. Inserita tale data, se chiudo il file e lo apro il giorno dopo, questa non deve aggiornarsi al giorno successivo me restare al valore del giorno in cui l'ho inserita.
Di fatto vengono esclude le funzioni OGGI() e ADESSO().
Avete qualche suggerimento?
l'unica credo sia una piccola macro che copia e incolla il valore ;)
diabolik1981
23-02-2009, 20:30
purtroppo non sono un programmatore, quindi con le macro e col VBA non sono esperto. Se qualcuno è così gentile da darmi una mano, lo ringrazio.
i valori sono così tanti da necessitare una funzione/macro per il solo inserimento della data?
con un macro si può fare:
con
Today() ti restituisce la data odierna.
per provare scrivi in una cella =Today() e ti restituisce la data del sistema.
per l'altro problema ci vorrebbe un if che fa il controllo della cella se è vuota o meno, per esempio:
If A5 <> "" Then
A10 = Today()
endIf
per singola cella, per l'intera colonna dovresti fare utilizzare un ciclo(Do until loop per esempio).
questa è un'idea, poi di sicuro qualcuno + bravo di me, conosce già qualche funzione.
cerca con google che ci sono diversi esempi di macro.
ciao
diabolik1981
24-02-2009, 19:41
con un macro si può fare:
con
Today() ti restituisce la data odierna.
per provare scrivi in una cella =Today() e ti restituisce la data del sistema.
per l'altro problema ci vorrebbe un if che fa il controllo della cella se è vuota o meno, per esempio:
If A5 <> "" Then
A10 = Today()
endIf
per singola cella, per l'intera colonna dovresti fare utilizzare un ciclo(Do until loop per esempio).
questa è un'idea, poi di sicuro qualcuno + bravo di me, conosce già qualche funzione.
cerca con google che ci sono diversi esempi di macro.
ciao
Come già detto nel primo post Today()= Oggi() ha il grosso handicap di aggiornarsi automaticamente col passar dei giorni, mentre vorrei che la data non cambi col passare dei giorni.
purtroppo non sono un programmatore, quindi con le macro e col VBA non sono esperto. Se qualcuno è così gentile da darmi una mano, lo ringrazio.
apri excel
alt+f11 per entrare in vba
inserisci modulo
incolla sta spappardella qui sotto
Sub incollavalori()
Columns("A:A").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub
e poi se vuoi crea una figura sul foglio e assegna la macro
Come già detto nel primo post Today()= Oggi() ha il grosso handicap di aggiornarsi automaticamente col passar dei giorni, mentre vorrei che la data non cambi col passare dei giorni.
riscrivendo opportunamente la macro e prendendo il valore della data e non la funzione, la data non cambia.;) il mio era solo uno spunto da dove iniziare!
prova quella di zuper!;)
diabolik1981
25-02-2009, 16:13
apri excel
alt+f11 per entrare in vba
inserisci modulo
incolla sta spappardella qui sotto
Sub incollavalori()
Columns("A:A").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub
e poi se vuoi crea una figura sul foglio e assegna la macro
grazie per l'aiuto, ma non ci siamo ancora per il risultato di cui ho bisogno, e spero tu mi possa aiutare ancora.
Cerco di spiegarmi meglio. Ho la necessità che dal codice macro si generi una funzione (così posso richiamarla da excel e farci altri calcoli), che non faccia altro che prendere la data odierna (quindi una specie di "oggi()") e me la restituisca come valore e non come data, esattamente come avviene per parte della macro che gentilmente mi hai scritto. Spero di essere stato chiaro e ancora grazie.
nn capisco il problema :)
tu fai tutti i calcoli che vuoi e metti le funzioni che vuoi.
prima di chiudere il file lanci la macro che ti copia e incolla i valori della colonna A
diabolik1981
26-02-2009, 09:45
nn capisco il problema :)
tu fai tutti i calcoli che vuoi e metti le funzioni che vuoi.
prima di chiudere il file lanci la macro che ti copia e incolla i valori della colonna A
il problema c'è perchè questa funzione mi serve per automatizzare un registro di contabilità. Registro dal quale vengono poi estrapolati molti dati, date comprese, per controlli vari. Ecco perchè ho bisogno che il tutto proceda come detto poco sopra. Se avvenisse a fine sessione mi ritroverei a dover riaprire il file per lavorarci nuovamente.
il problema c'è perchè questa funzione mi serve per automatizzare un registro di contabilità. Registro dal quale vengono poi estrapolati molti dati, date comprese, per controlli vari. Ecco perchè ho bisogno che il tutto proceda come detto poco sopra. Se avvenisse a fine sessione mi ritroverei a dover riaprire il file per lavorarci nuovamente.
se ti crei un pulsante la macro la fai girare quando vuoi
diabolik1981
27-02-2009, 11:23
Ho risolto finalmente. Ho creato un modulo che contiene questo
Function DataOggi(cella As Range)
DataOggi = Now
End Function
dopo ciò in b1 uso questa formula
=SE(C3<>"";dataoggi(B3);"")
Non appena la cella c3 si riempie mi appare la data odierna in B3 che domani non verrà aggiornata.
Cosa importantissima è non modificare il nome al modulo, perchè crea un errore in fase di riapertura del file che porta ad un errore #NOME!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.