Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro per ricerca date da ... a...

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

macro per ricerca date da ... a...

Postdi martin » 20/02/09 14:48

ciao anthony
devo migliorare una macro con la possibilità di ricercare delle date stabilite da... a....
la macro che utilizzo adesso è questa:

Sub Cerca2()
For i = 7 To 7
Sheets(i).Unprotect Password = "5259"
Next i
Sheets("cerca").Range("a3:F3").ClearContents
Sheets("scarico").Columns("A:F").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("cerca").Range("a1:F2"), CopyToRange:=Sheets("cerca").Range("a3"), Unique:=False
For i = 7 To 7
Sheets(i).Protect Password = "5259"
Next i
End Sub

inserendo il dato sopra il rigo corrispondente ricerco per tutto con la macro.

CODICE ARTICOLO DATA Scarico COSTO TOT.COSTO

il problema è che adesso mi serve leggere da una data ad un'altra tutti i movimenti (es. dal 2febbraio al 25febbraio.)
quindi vorrei inserire due celle dove definisco le date da cercare e una macro che mi operi in questo
ciao grazie anticipate
martin
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Sponsor
 

Re: macro per ricerca date da ... a...

Postdi Flash30005 » 20/02/09 16:53

martin ha scritto:...il problema è che adesso mi serve leggere da una data ad un'altra tutti i movimenti (es. dal 2febbraio al 25febbraio.)

Tramite filtro con le due condizioni:
Maggiore o uguale 02 febbraio 2009
And
Minore o uguale 25 febbraio 2009
non va bene?
Se ti occorre una macro che componga automaticamente il filtro la puoi registrare come ho fatto io
Codice: Seleziona tutto
Sub Macro1()
    Selection.AutoFilter
    Selection.AutoFilter Field:=93, Criteria1:=">=02-feb-2009", Operator:= _
        xlAnd, Criteria2:="<=25-feb-2009"
    Range("A1").Select
End Sub

Dove Field:=93 è il numero di colonna della data (nel mio caso era la colonna "CO")

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per ricerca date da ... a...

Postdi martin » 20/02/09 18:42

ok flash grazie
per avermi risposto

ho provato ma c'è qualcosa che non va.
nel mio caso la colonna era n.3
funziona ma mi da una data in più che non dovrebbe esempio se dico < 19 lui una sola del 19 la inserisce lo stesso
se si corregge poi dovremmo aggiungere un comando che toglie il filtro
grazie ciao
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi Flash30005 » 20/02/09 23:47

martin ha scritto:ok flash grazie
per avermi risposto

ho provato ma c'è qualcosa che non va.
nel mio caso la colonna era n.3
funziona ma mi da una data in più che non dovrebbe esempio se dico < 19 lui una sola del 19 la inserisce lo stesso
se si corregge poi dovremmo aggiungere un comando che toglie il filtro
grazie ciao


Credo che ti succeda questo perché non hai una riga di testata dovresti aggiungere un riga anche attraverso la macro
Codice: Seleziona tutto
    Rows("1:1").Select                                          '<<< aggiungere
    Selection.Insert Shift:=xlDown                                          '<<< aggiungere
    Rows("1:1").Select                                          '<<< aggiungere
   
Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:=">01/07/2009", Operator:=xlAnd, Criteria2:="<01/19/2009"

Attenzione le mie date sono in formato mm/gg/yyyy quindi nel tuo caso dovrai usare il formato a te idoneo
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per ricerca date da ... a...

Postdi Anthony47 » 21/02/09 01:40

Per martin: come vedi il forum e' piu' grande del suo Moderatore...

La riga che ti compare in piu' e' la N. 1, come ha ipotizzato Flash?
Per togliere i filtri basta filtrare con valore ""; es Criteria1:="" (se usi celle dove inserisci i criteri, basta azzerare quelle celle).

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per ricerca date da ... a...

Postdi martin » 21/02/09 06:30

okkkkkkkkkk
ragazzi grazie
risolto siete stati gentilissimi
martin
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi martin » 24/02/09 12:07

ragazzi problem.........

allora funziona!!!!!!!!!
però:
1) ogni volta che attivo macro per ricerca mi inserisce nuovo rigo e lo lascia mi ritrovo quindi 20 ricerche 20 nuovi righi.!!!!!!!!!
2)ho provato a fare macro di chiusura per cancellare rigo , ma se involontariamente si fa più volte c'è il rischio che cancelli righi attivi.
3)sembrava scontato per me capire come inserire celle per inserire date di ricerca ma non ci riesco
non li legge.del tipo ho provato:
Sub Macro1()
Rows("1:1").Select '<<< aggiungere
Selection.Insert Shift:=xlDown '<<< aggiungere
Rows("2:2").Select '<<< aggiungere
a = "L1"
b = "m1"

Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=">=a", Operator:= _
xlAnd, Criteria2:="<=b"
Range("A1").Select
End Sub

di sicuro c'è un errore
poi dato che la ricerca deve essere solo sulle date da ... a... si puo evidenziare filtro solo per la colonna data??
grazie attendo vs
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi Anthony47 » 24/02/09 20:01

Insomma non funziona ancora.
Deduco che metti le date da.. a.. in L1 ed M1 e che la colonna con la data sia la C; immagino anche che oramai avrai inserito una riga in testa ai tuoi dati da filtrare (il genere e' la riga con le intestazioni); dovrebbe quindi funzionare questa macro in sostituzione di quella che usi:
Codice: Seleziona tutto
Sub Macro11()
'Rows("1:1").Select '<<< aggiungere
'Selection.Insert Shift:=xlDown '<<< aggiungere
'Rows("2:2").Select '<<< aggiungere
FiltroA = ">=" & Range("L1").value       '<< Prima data in L1
FiltroB = "<=" & Range("M1").value      '<< Ultima data in M1
Range("C:C").Select                           '<< Colonna con la data
Selection.AutoFilter Field:=1, Criteria1:=FiltroA, Operator:=xlAnd, Criteria2:=FiltroB
Range("A1").Select
End Sub

Prova e fai sapere, 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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per ricerca date da ... a...

Postdi martin » 24/02/09 23:31

anthony
ciao....
ok tutto come hai inteso.
funziona parzialmente
mi spiego meglio, ad attivazine macro appare solo primo rigo con intestazioni e colonna date attiva con filtro.
ma dati nessuno.
aprendo il filtro su colonna date e andando su personalizza trovo," le date e prima e dopo esatti "si da ok e appaiono i righi interessati.
va cosi o pensi di riuscire a meglio , nel senso che i dati devono apparire ad attivazione macro??
attendo tua grazie martin
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi Flash30005 » 25/02/09 01:28

E' solo una questione di formato data
il filtro funziona ma legge la data come mese/giorno/anno e quindi non dava risultati
quindi usando la stessa macro di Anthony ma formattando nella macro il formato data così
Codice: Seleziona tutto
Sub Macro11()
DaData= Format(Range("L1").Value, "mm/dd/yyyy")
AData = Format(Range("M1").Value, "mm/dd/yyyy")
FiltroA = ">=" & DaData       '<< Prima data in L1 (formato europeo gg/mm/aaaa)
FiltroB = "<=" & AData     '<< Ultima data in M1 (formato europeo gg/mm/aaaa)
Range("C:C").Select                           '<< Colonna con la data
Selection.AutoFilter Field:=1, Criteria1:=FiltroA, Operator:=xlAnd, Criteria2:=FiltroB
Range("A1").Select
End Sub

dovresti risolvere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per ricerca date da ... a...

Postdi martin » 25/02/09 02:03

ok flash

:lol:

fatto grazie
era un problema i lettura data.

ma adesso so che rompo ma c'è altro...
nella lista completa ultimo rigo da i totali.

nel filtraggio!!!
come faccio a fare una riga in automatico con i totali del filtrato?????????? da ... a....
mi aiuti?????
grazie martin
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi Flash30005 » 25/02/09 10:53

Ciao Martin

Ho fatto qualcosa di funzionante anche se un po' "spartana"
Allora ho considerato che la somma sia sulla colonna D
La colonna E la utilizzo momentaneamente per calcolarmi il numero di riga di inizio somma
La somma la faccio nella cella N1
La cella O1 la utilizzo temporaneamente per cerca riferimento della data inizio che insieme alla colonna e mi danno la riga inizio,
alla fine cancello tutto ciò che non occorre
Il tutto con il seguente codice
Codice: Seleziona tutto
Sub Macro11()
Range("N1").ClearContents                               'Riga aggiunta, pulisce la somma precedente
'---------------------------------------------------------------------------- macro precedente e funzionante
DaData = Format(Range("L1").Value, "mm/dd/yyyy")
AData = Format(Range("M1").Value, "mm/dd/yyyy")
FiltroA = ">=" & DaData       '<< Prima data in L1 (formato europeo gg/mm/aaaa)
FiltroB = "<=" & AData     '<< Ultima data in M1 (formato europeo gg/mm/aaaa)
Range("C:C").Select                           '<< Colonna con la data
Selection.AutoFilter Field:=1, Criteria1:=FiltroA, Operator:=xlAnd, Criteria2:=FiltroB
UR = Range("D" & Rows.Count).End(xlUp).Row - 1
    Range("E1").FormulaR1C1 = "1"
    Range("E2").FormulaR1C1 = "2"
    Range("E1:E2").Select
    Selection.AutoFill Destination:=Range("E1:E" & UR), Type:=xlFillDefault
    '-------------------------------------------------------------------------------------------- da qui in poi sono le righe aggiunte
    Range("O1").FormulaR1C1 = "=VLOOKUP(RC[-3],RC[-12]:R[28]C[-10],3,FALSE)"
    PR = Range("O1").Value - 1
    Range("N1").FormulaR1C1 = "=SUM(R[" & PR & "]C[-10]:R[" & UR & "]C[-10])"
        Range("O1").ClearContents
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Selection.Insert Shift:=xlToRight
Range("A1").Select
End Sub


Sicuramente si potrebbero evitare di utilizzare le celle di appoggio ma non conosco il codice per ricavarmi la riga di inizio somma senza numerare la colonna (E), qualcun altro ti saprà consigliare meglio, nel frattempo fai questa prova

Ciao

P.s. Se cambi le colonne D, E, N e O in altre colonne tieni presente che le formule hanno un riferimento relativo (-X colonne) che dovrai cambiare di conseguenza
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per ricerca date da ... a...

Postdi Anthony47 » 25/02/09 17:34

Per calcoli sulle sole righe visualizzate puoi usare la funzione Subtotale; qualcosa come =Subtotale(9;A2:A1000) che somma le celle visibili tra A1 e A1000.
Guarda l' help on line della funzione, che ha altre interessanti modalita', quali Conta, Media, Min etc.

Oppure usi una formula basata su Matr.Somma.Prodotto, usando come condizioni le stesse date limite usate per gestire il filtro.

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per ricerca date da ... a...

Postdi martin » 25/02/09 18:27

ragazzi
voi siete degli assi
io sono ancora agli inizi
flash
ho sistemato colonne come tuo esempio quindi somma di D
provata tua formula funziona ma mi da totale generale di tutta la lista non del parziale selezionato.

anthony
che ti dico ... non ho capito
comunque ho provato a fare il sub
ma mi apre doppio rigo con i sub (si allunga di troppo la pagina) ma è esatto.
a me interessa solo il totale del selezionato dalla colonna E alla k
da inserire alla macro che mi hai dato
grazie martin
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi Flash30005 » 25/02/09 22:40

Martin,
guarda la macro, pur spartana, funziona
fai così:
apri un nuovo foglio di lavoro vuoto
incolla nel modulo la macro11 come te l'ho postata
in C1 metti il testo "Data" in D1 "Somma" in L1 metti una data es 05/02/2009, in M1 metti 12/02/2009
In C2 metti 01/02/2009 e lo trascino fino a marzo (oltre 30 righe)
in D2 scrivi 1 e lo trascini per le righe delle date (avrai tutti 1 ma è solo per comodità di verifica)
fatto questo lanci la macro11
avrai in N1 avrai 8 il totale delle sole righe filtrate (che sono 8)

Se ti funziona potrai adattare il tutto al tuo foglio di lavoro oppure postare la colonna dove devi fare le somme e quale colonne hai libere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per ricerca date da ... a...

Postdi Flash30005 » 25/02/09 23:26

Aggiungo che con la formula di Anthony inserita in N1 puoi evitare di mettere la macro "spartana" ma solo questi codici
Codice: Seleziona tutto
Sub Macro11()
DaData = Format(Range("L1").Value, "mm/dd/yyyy")
AData = Format(Range("M1").Value, "mm/dd/yyyy")
FiltroA = ">=" & DaData       '<< Prima data in L1 (formato europeo gg/mm/aaaa)
FiltroB = "<=" & AData     '<< Ultima data in M1 (formato europeo gg/mm/aaaa)
Range("C:C").Select                           '<< Colonna con la data
Selection.AutoFilter Field:=1, Criteria1:=FiltroA, Operator:=xlAnd, Criteria2:=FiltroB
UR = Range("D" & Rows.Count).End(xlUp).Row - 1
    Range("E1").FormulaR1C1 = "1"
    Range("E2").FormulaR1C1 = "2"
    Range("E1:E2").Select
    Selection.AutoFill Destination:=Range("E1:E" & UR), Type:=xlFillDefault
   Range("A1").Select
End Sub

In N1 metterai la formula di Anthony
Codice: Seleziona tutto
=Subtotale(9;A2:A1000)


Se la colonna delle somme non è A allora sostituirai quella lettera es se dovesse essere E (come nel foglio esempio del post precedente) scriverai
Codice: Seleziona tutto
=Subtotale(9;E2:E1000)

Ricorda, questa formula va messa in una cella della riga 1 (non nella macro) e nemmeno nelle righe successive altrimenti potrebbe non apparire perché filtrata.
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per ricerca date da ... a...

Postdi martin » 26/02/09 01:44

flash
seguito alla lettera tua ultima
attivando macro mi da errore macro qui:
Selection.AutoFill Destination:=Range("E1:E" & UR), Type:=xlFillDefault

invece ho risolto con la formula:
=SUBTOTALE(9;E2:E1000)
per le diverse colonne sistemata nelle celle n2 n3 n4 n5 n6 n7

solo se la ricerca è piccola non appaiono i totali ma siccome almeno 10 righi ci sono sempre penso vada bene così.

sei stato gentilissimo .
ue se si trova meglio fatemi sapere ciao e grazie

grazie anche anthony
:lol:
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi Anthony47 » 26/02/09 03:13

Forse e' meglio che metti le formule Subtotale su riga 1; a meno che non sia garantito che le righe 2, 3, 4, 5, 6 e 7 non vengano mai nascoste, cosa pero' che puo' succedere solo se il filtro e' applicato dalla riga 8 in avanti.

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per ricerca date da ... a...

Postdi martin » 26/02/09 12:57

Si Anthony
è proprio cosi!!
infatti il mio desiderio era quello
di sistemare i totali in automatico sotto ogni colonna primo rigo disponibile.
Sitemando da n1 o1 p1... mi allargo troppo.
e poi ho problemi nella stampa.
ti chiedevo altrimenti se possibile mettere i totali in prima riga da e1 fino k1
e in secondo rigo le intestazioni fino a m2 e n2 dove spostare la ricerca
che dici ???
ciao martin
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Re: macro per ricerca date da ... a...

Postdi martin » 26/02/09 13:04

anthony
ho provato a fare come ti dicevo
funziona ,solo che sparisce la riga intestazioni
penso sia risolvibile.
martin
Utente Senior
 
Post: 108
Iscritto il: 03/12/08 17:04

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "macro per ricerca date da ... a...":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti