New Thread
Reply
Log In
Register
Previous page | 1 | Next page
Print | Email Notification    
Author
Facebook   Ricerca valori in un intervallo di date Last Update: 1/3/2013 9:03 PM
12/16/2007 6:20 PM
 
Email
 
User Profile
 
Modify
 
Delete
 
Quote
Post: 847
Registered in: 7/12/2005
Location: LA SPEZIA
Age: 49
Senior User
Questa semplice routine, ci può aiutare quando abbiamo da ricercare dei valori in base ad un intervallo di date .

Ecco il codice, che come potete notare può essere usato anche per altre tipo di ricerche che magari non riguardano le date.

Sub RicercaData()
' La routine  cerca   sulla base di due  Date selezionate   un intervallo e poi incolla  i valori iniziando dalla Colonna scelta , nell'esempio la C
Dim uno ' anche se non obbligatorio è meglio sempre di dichiarare le variabili, che in questo caso è di tipo variant
Dim due
Dim CL As Object  ' anche qui dichiaramo la  varibiale come di tipo oggetto per essere meglio indetificata nel ciclo di ricerca
uno = InputBox("INSERISCI LA PRIMA DATA DI RICERCA")
If uno = "" Then Exit Sub ' se non c'è alcun valore allora esci
due = InputBox("INSERISCI LA SECONDA DATA DI RICERCA")
tre = Format(uno, "dd/mm/yy")  'imposta il formato data
quattro = Format(due, "dd/mm/yy")
Set rng = Sheets("Foglio1").Range(("A1"), Range("A1").End(xlDown)) ' prendi l'intervallo  da A1 , fino all'ultima cella con valore
For Each CL In rng  'inizia il ciclo di ricerca
If CL >= CDate(tre) And CL <= CDate(quattro) Then  ' se trovi un  valore all'intervallo delle date
riga = Range("C65536").End(xlUp).Row + 1    'allora seleziona la prima riga +1 libera della colonna C e incollaci i valori

' la sintassi seguente ci dice  che se il CL  in questo caso la data è compresa nell'intervallo, allora seleziona la riga
'attiva della variabile "riga" e seleziona la colonna 3 che corrisponde alla C e incolla la data presente in A,
'continua e seleziona la colonna 4 ( la D) e incolla il valore corrispondente nella colonna B
'ovviamente  si può continuare a selezionare altri valori che possono essere presenti nella riga ....
    
    Cells(riga, 3) = CL.Value  ' valore data presente nella colonna A
    Cells(riga, 4) = CL.Offset(0, 1) ' valore corrispondente  alla data nella colonna B, mettila in D (riga,colonna)
End If
Next CL
Set uno = Nothing ' scarica la variabile in modo tale da non avere in memoria dei valori per una nuova ricerca

Set due = Nothing
Set tre = Nothing
Set quattro = Nothing
End Sub


Allego anche il file di esempio.

Luca
12/16/2007 6:21 PM
 
Email
 
User Profile
 
Modify
 
Delete
 
Quote
Post: 848
Registered in: 7/12/2005
Location: LA SPEZIA
Age: 49
Senior User
6/25/2008 4:56 PM
 
Email
 
User Profile
 
Modify
 
Delete
 
Quote
Post: 0
Registered in: 8/30/2007
Age: 41
Junior User
HELP!!!!!
Buongiorno a tutti, e complimenti per il forum

prendendo spunto da questo utilissimo topic, ho provato a modificare il codice in base a cio' che serve a me, ma non ci sono riuscito.

Qualcuno mi puo aiutare?

Fondamentalmente ho una serie di dati, che mi vengono importanti da due query di Access, e mi compilano le colonne da "A" a "G" in due diversi fogli.

Il file è appunto composto da due fogli, con le stesse identiche colonne compilate, fondamentalmente nel foglio 1 il campo data da filtrare è la "D", nel foglio 2 il campo data da filtrare è la "E".

Dovrei poter impostare un filtro per periodo ( da data... a data...)come quello dell'esempio, che mi filtri le date impostate nella colonna "D" per il foglio 1, e nella colonna "E" del foglio 2, ed il tutto dovrebbe restituire un nuovo foglio di lavoro con incolonnati tutti i dati filtrati nei due precedenti fogli.

Fondamentalmente devo "tener buone" le righe dove la data (rispettivamente nelle colonne D ed E)è compresa tra ..(data).. e ..(data)..

E' possibile secondo voi?

Grazie per l'attenzione, a presto
6/25/2008 6:29 PM
 
Email
 
User Profile
 
Modify
 
Delete
 
Quote
Post: 931
Registered in: 7/12/2005
Location: LA SPEZIA
Age: 49
Senior User
Ciao,
prova ad allegare un file di esempio.

Luca
6/25/2008 6:52 PM
 
Email
 
User Profile
 
Modify
 
Delete
 
Quote
Post: 1
Registered in: 8/30/2007
Age: 41
Junior User
In allegato.

fondamentalmente nel foglio 3 dovrebbero andare, incolonnati, i dati filtrati del foglio 1 in base a D, ed i dati filtrati del foglio 2 in base ad E.

Grazie in anticipo!
1/3/2013 9:03 PM
 
Email
 
User Profile
 
Modify
 
Delete
 
Quote
Post: 0
Registered in: 1/3/2013
Location: MILANO
Age: 44
Junior User
Re:
[POSTQUOTE][QUOTE:76058945=APOBEN64, 16/12/2007 18:20]Questa semplice routine, ci può aiutare quando abbiamo da ricercare dei valori in base ad un intervallo di date .

Ecco il codice, che come potete notare può essere usato anche per altre tipo di ricerche che magari non riguardano le date.

[TESTO]Sub RicercaData()
' La routine cerca sulla base di due Date selezionate un intervallo e poi incolla i valori iniziando dalla Colonna scelta , nell'esempio la C
Dim uno ' anche se non obbligatorio è meglio sempre di dichiarare le variabili, che in questo caso è di tipo variant
Dim due
Dim CL As Object ' anche qui dichiaramo la varibiale come di tipo oggetto per essere meglio indetificata nel ciclo di ricerca
uno = InputBox("INSERISCI LA PRIMA DATA DI RICERCA")
If uno = "" Then Exit Sub ' se non c'è alcun valore allora esci
due = InputBox("INSERISCI LA SECONDA DATA DI RICERCA")
tre = Format(uno, "dd/mm/yy") 'imposta il formato data
quattro = Format(due, "dd/mm/yy")
Set rng = Sheets("Foglio1").Range(("A1"), Range("A1").End(xlDown)) ' prendi l'intervallo da A1 , fino all'ultima cella con valore
For Each CL In rng 'inizia il ciclo di ricerca
If CL >= CDate(tre) And CL <= CDate(quattro) Then ' se trovi un valore all'intervallo delle date
riga = Range("C65536").End(xlUp).Row + 1 'allora seleziona la prima riga +1 libera della colonna C e incollaci i valori

' la sintassi seguente ci dice che se il CL in questo caso la data è compresa nell'intervallo, allora seleziona la riga
'attiva della variabile "riga" e seleziona la colonna 3 che corrisponde alla C e incolla la data presente in A,
'continua e seleziona la colonna 4 ( la D) e incolla il valore corrispondente nella colonna B
'ovviamente si può continuare a selezionare altri valori che possono essere presenti nella riga ....

Cells(riga, 3) = CL.Value ' valore data presente nella colonna A
Cells(riga, 4) = CL.Offset(0, 1) ' valore corrispondente alla data nella colonna B, mettila in D (riga,colonna)
End If
Next CL
Set uno = Nothing ' scarica la variabile in modo tale da non avere in memoria dei valori per una nuova ricerca

Set due = Nothing
Set tre = Nothing
Set quattro = Nothing
End Sub[/TESTO]

Allego anche il file di esempio.

Luca
[/QUOTE][/POSTQUOTE]


Questo è proprio quello che mi serviva, gentilmente mi dite come posso cambiare le colonne di ricerca e di destinazione?c'ho provato a guardare ma non ci sono riuscito
Admin Thread: | Close | Move | Delete | Modify | Email Notification Previous page | 1 | Next page
New Thread
Reply

Excel Forum | Search | Log In | Log Out | Register | Admin
Create your free community and forum! Register to FreeForumZone
FreeForumZone [v.3.4.3] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 9:26 PM. : Printable | Mobile
Copyright © 2000-2013 FreeForumZone snc - www.freeforumzone.com