Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Filtro su Data e fotografia con data e hh.mm.ss

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[EXCEL] Filtro su Data e fotografia con data e hh.mm.ss

Postdi thunder78 » 21/11/07 22:45

Ciao a tutti

Avrei bisogno di un aiuto su 2 problemi:

PRIMO PROBLEMA

Dovrei filtrare, da una colonna "data" tutto quello che contiene la data del giorno. Le date sono tutti diverse, anche vecchie e sono formattate con formato gg/mm/aaaa hh.mm. Ho utilizzato quindi la funzione INT per formattare la data nel formato gg/mm/aaaa 00.00, quindi con formato cella l'ho portata nel formato gg/mm/aaaa.

Il problema è che tra queste date devo filtrare solamente la data del giorno (es. oggi è il 21/11 quindi mi servono tutti i dati di questo giorno); domani sarà 22 quindi mi serviranno i dati del 22, e così via.

Come faccio a dire ad excel di filtrare la colonna con la data di oggi?

SECONDO PROBLEMA

Devo creare la copia di un foglio di lavoro (es.foglio1) e affiancarla al foglio originale. Fin qui nessun problema :lol: ma come faccio a nominarlo all'interno dello stesso file con la data (del giorno) in formato gg/mm/aaaa hh.mm.ss ?

Grazie ad ANTHONY e a tutti anticipatamente.

Ciao.
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Sponsor
 

Postdi thunder78 » 22/11/07 21:44

Lo so forse è un pò complesso...
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 23/11/07 00:40

Non ci sono cose semplici e cose complesse, ma solo cose che si conoscono e cose che non si conoscono :D

Per quanto riguarda il filtro, vedi se l’ approccio suggerito tempo fa a sibilla ti e’ sufficiente:
http://www.pc-facile.com/forum/viewtopic.php?t=54279
La cella E1 nel tuo caso conterra’ la formula
Codice: Seleziona tutto
=OGGI()



Per quanto riguarda il nome foglio, immagino che lo avrai copiato con qualcosa tipo
Codice: Seleziona tutto
Sheets(I).Copy After:=Sheets(I)

Allora aggiungici subito dopo questa:
Codice: Seleziona tutto
ActiveSheet.Name = Format(Now(), "dd-mm-yyy hh.mm.ss")
Ho usato “-“ invece di “/”, carattere vietato nel nome di un foglio.

Ciao, fai sapere.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi thunder78 » 27/11/07 10:22

Volevo chiedere una volta effettuata la prima macro come faccio a filtrare il risultato, quindi la data? Anche se provo a selezionare gli #N/D non succede nulla.

Grazie.
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 27/11/07 11:47

Quale soluzione stai provando? visto che volevi filtrare per data, gli N/D che cosa rappresentano?

Ciao, ti aspetto.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi thunder78 » 27/11/07 15:39

devo solo filtrare la data, ma dato che la macro va eseguita tutti i giorni questa è soggetta a cambiamenti devo quindi poter escludere gli n/d e filtrare la data del giorno.

Come posso fare?
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi thunder78 » 27/11/07 23:30

Mi spiego meglio:

A casa ho installato office 2007 e ho risolto il problema filtrando la data di oggi con il filtro "today"

Codice: Seleziona tutto
ActiveSheet.Range("$A$1:$AD$6350").AutoFilter Field:=20, Criteria1:= _
        xlFilterToday, Operator:=xlFilterDynamic


Al lavoro devo usare office 2003, che non ti da la possibilità di utilizzare questa macro. In pratica devo filtrare la data del giorno per copiare i dati corrispondenti su un altro foglio di lavoro ma non so come fare, in quanto se utilizzo il filtro <> da #n/d non funziona quando esegui la macro.

Grazie. [/code]
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 28/11/07 00:46

Ti avevo consigliato di leggere il caso "sibilla" e verificare se la soluzione li' suggerita poteva andare bene per il tuo caso (messaggio del 23/11/07 00:40); lo hai fatto e con quale esito??

In piu', visto ch evuoi filtrare una colonna di date, continuo a non capire gli N/D da dove vengono (mia domanda del 27/11/07 11:47 ).

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi thunder78 » 28/11/07 21:28

Scusa, forse sono stato poco chiaro:

Ho un foglio (foglio 1) con una certa quantità di righe e colonne (le colonne vanno da A ad AB con un numero delle righe variabile). Su una di queste colonne (colonna R) ho la data che formatto aggiungendo un'altra colonna accanto (colonna S) tramite la funzione INT e la porto nel formato dd/mm/yyy.

Nella stessa cartella di lavoro, creo un altro foglio (foglio 2) e utlizzo la funzione "oggi". Fatto ciò, torno sul foglio1 e aggiungo una ulteriore colonna (colonna T) dove applico la funzione cerca verticale (cerco partendo dalla colonna S del foglio1 nella colonna A del foglio2) e quindi riporto la data corrispondente dal foglio2. Ecco da dove arrivano gli #N/D.
Quindi devo escludere tutte le righe che contengono #N/D per potere ricavare solo le righe con la data del giorno.
ECCO IL CODICE:

Codice: Seleziona tutto
Columns("S:S").Select
    Selection.Insert Shift:=xlToRight
    Range("S1").Select
    ActiveCell.FormulaR1C1 = "INT"
    Range("S2").Select
    ActiveCell.FormulaR1C1 = "=INT(RC[-1])"
    Selection.AutoFill Destination:=Range("S2:S6350")
    Range("S2:S6350").Select
    Sheets("backup2").Select
    Sheets.Add.Name = "OGGI"
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "OGGI"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Sheets("backup2").Select
    Application.CommandBars("Task Pane").Visible = False
    Columns("S:S").Select
    Selection.NumberFormat = "m/d/yyyy"
    Columns("T:T").Select
    Selection.Insert Shift:=xlToRight
    Range("T1").Select
    ActiveCell.FormulaR1C1 = "OGGI"
    Range("T2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],OGGI!C[-19],1,0)"
    Selection.AutoFill Destination:=Range("T2:T6350")
    Range("T2:T6350").Select
    Columns("S:T").Select
    Range("T1").Activate
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("T1").Select
    Selection.AutoFilter


Spero di essere stato chiaro (in effetti prima non si capiva) :aaah

Grazie. Marco.
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 29/11/07 02:36

Vedo… pero’ ti sei complicato la vita.
Ad esempio, una volta calcolata la data in colonna S (funzione INT) potresti applicare su questa colonna il “metodo sibilla”; pari pari, salvo adeguamento della colonna selezionata (S:S invece che A:A) e della cella che contiene la data: [Sheets("OGGI ").range("A2 ").value invece di Range("E1 ").value].

Comunque puoi anche evitare l’ uso della colonna S e lavorare direttamente con quanto disponibile in col R, adattando la “macro sibilla” come segue:
Codice: Seleziona tutto
Sub Sibilla()
Columns("R:R").Select
    Selection.AutoFilter Field:=1, Criteria1:=">=" & Sheets("OGGI").Range("A2").Value, Operator:=xlAnd, _
        Criteria2:="<" & Sheets("OGGI").Range("A1").Value + 1
Range("A1").Select
End Sub


Ovviamente ti puoi anche risparmiare il foglio OGGI usando:
Codice: Seleziona tutto
    Selection.AutoFilter Field:=1, Criteria1:=">=" & Date, Operator:=xlAnd, _
        Criteria2:="<" & Date + 1


Infine, nel caso che avesse ancora senso la domanda su come evitare gli #N/D, la cosa piu’ semplice e’ evitare l’ uso di VLOOKUP (che e’ ottima per cercare corrispondenze in una tabella) e invece usare la IF (che invece e’ migliore per verificare corrispondenza tra celle, come nel tuo caso); quindi qualcosa come
Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=OGGI!C[-19],1,0)"

che ti mette 1 nelle righe con data oggi e 0 in quelle diverse.

Ciao, spero di non averti confuso troppo…
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Filtro su Data e fotografia con data e hh.mm.ss":


Chi c’è in linea

Visitano il forum: Nessuno e 131 ospiti

cron