Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Funzione cerca.vert "estesa"

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

Funzione cerca.vert "estesa"

Postdi tahcniolos » 26/11/08 15:39

Non so se il titolo è abbastanza eloquente, mi chiedevo se e come è possibile fare in modo che Excel, nel cercare per esempio una data da una colonna e restituendo il dato corrispondente indicato con la funzione CERCA.VERT (VLOOKUP), si renda conto che di date uguali ce ne sono altre e restituisca tante righe per quante sono le date uguali che trova.
Per esempio, il 01/01/2008 ho acquistato 3 zucchine, poi 3 melanzane, poi 4 peperoni. Questi dati li ho su tre righi, e nella prima colonna c'è sempre la stessa data. Se utilizzo CERCA.VERT, mi verrà restituito solo il primo dei valori in corrispondenza della data indicata, mentre io vorrei che il programma continuasse a cercare tutte le date uguali nella colonna....
Grazie per l'aiuto.
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Sponsor
 

Re: Funzione cerca.vert "estesa"

Postdi Anthony47 » 26/11/08 15:47

Ovviamente Cerca.Vert ti restituisce "1" dato, non un "insieme" di dati.
Per fare quello che chiedi devi crearti un insieme di formule che localizzano la prima occorrenza con Confronta (Match), e cercano quelle successive sempre con Confronta ma lavorando sull' intervallo che parte dall' occorrenza precedente.

Se non basta questo spunto, precisa meglio l' obiettivo e possiamo provare a suggerire qualche formula.

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: Funzione cerca.vert "estesa"

Postdi tahcniolos » 01/12/08 16:02

Ho bisogno di qualche spunto in più, e spiego anche meglio la mia "necessità": utilizzando un foglio excel come prima nota, vorrei riportare, su un altro foglio, i dati corrispondenti ad un determinato giorno "a richiesta".
Per esempio: il 01/01/2008 ho venduto per 100 euro un tot del prodotto x al cliente y; lo stesso giorno 200 euro per tot di prodotto z al cliente xy, il giorno dopo qualche altra cosa.
Nel momento in cui ipotizzo di usare lo stesso foglio di "inserimento dati" per tutto il mese, o addirittura per tutto l'anno, volevo creare in un secondo foglio una formula che mi permettesse di estrarre tutto ciò che era successo in una data a scelta (o eventualmente solo alcune delle colonne, tipo prodotto e cliente, o quantità e prodotto) e sistemarlo quasi come se fosse un report: la funzione è in realtà quella del filtro automatico, solo che dovrebbe funzionare su un'altra pagina e in modo da consentire elaborazioni.
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Re: Funzione cerca.vert "estesa"

Postdi Anthony47 » 01/12/08 21:29

Prova invece a creare una tabella pivot dei tuoi dati, mettendo la data nel campo Riga del layout e i valori che ti interessa consuntivare nel campo Dati; dopo che hai prodotto la tabella, applica un layout che mette i dati di consuntivo in orizzontale.
In questo modo hai i dati di sintesi, ma se fai doppioclick su uno dei valori di consuntivo, excel ti creera' un nuovo foglio col dettaglio analitico di tutte le voci che compongono quel consuntivo, che potrai usare per fare libere elaborazioni.
Se ti servono dettagli su come impostare la tabella pivot, posta il layout dei dati su cui lavorare.

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

Re: Funzione cerca.vert "estesa"

Postdi tahcniolos » 02/12/08 18:33

Ho provato, ma non è quello che mi serve, anche perché ogni volta mi crea un nuovo foglio; cercherò di spiegare meglio ciò che mi occorre.
Premesso che in un foglio di inserimento di dati ho, in corrispondenza di una data, una serie di informazioni, (tipo prodotto, nome cliente, nome fornitore del prodotto, importo) vorrei creare in un altro foglio un "rapportino" con delle scritte fisse (Intestazione, data, scritta "Riepilogo vendite") e sotto una tabellina che si crei automaticamente, inserendo la data desiderata, e che riporti le voci desiderate degli incassi corrispondenti a quella data (es. in data 01/01/2008 tutte le righe inserite in quella data con le colonne desiderate (tutte quelle indicate prima o anche qualcuna in meno, eventualmente)).
Avrei potuto fare tutto inserendo un cerca.vert per ogni colonna desiderate, se questa funzione non si fermasse alla prima occorrenza della data.
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Re: Funzione cerca.vert "estesa"

Postdi Anthony47 » 02/12/08 18:45

Ma basta cancellare il foglio prodotto, se non ti interessa: Modifica /Elimina foglio, Ok.
O no?

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: Funzione cerca.vert "estesa"

Postdi Tribuno » 02/12/08 19:04

Ciao a tutti,

propongo una piccola macro, da associare ad un pulsante (o ad un tasto di scelta rapida:

Codice: Seleziona tutto
Sub Cerca()
    Columns("F:I").ClearContents
    Sheets("Foglio1").Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:D2"), CopyToRange:=Range("F1"), Unique:=False
End Sub


ovviamente da adattare. Per fare una prova:
in Foglio1, nelle colonne A:D ho i miei dati, in riga 1 le intestazioni di colonna (es. data, cliente, città, importo), in Foglio2 inserisco in A1:D1 le intestazioni di colonna di Foglio1, creo un pulsante (o un tasto di scelta rapida) da associare alla macro, inserendo un qualsiasi dato sotto le intestazioni di colonna di Foglio2, nelle colonne F:I sono riportati i dati filtrati. In pratica è il filtro avanzato di excel.
In questo modo si possono fare ricerche anche per cliente, città, importo, oppure mettendo più criteri.
Spero possa essere utile.

Ciao
Tribuno
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: Funzione cerca.vert "estesa"

Postdi Tribuno » 02/12/08 19:22

Ripropongo la macro:

Codice: Seleziona tutto
Sub Cerca()
    Sheets("Foglio2").Columns("F:I").ClearContents
    Sheets("Foglio1").Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("Foglio2").Range("A1:D2"), CopyToRange:=Sheets("Foglio2").Range("F1"), Unique:=False
End Sub


Ciao
Tribuno
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: Funzione cerca.vert "estesa"

Postdi tahcniolos » 09/12/08 16:50

Ok, la macro funziona (non che avessi dubbi!), adesso provo ad adattarla al mio schema;
due domande, tanto per tenervi in allenamento: 1) c'è un modo per far sì che la macro funzioni in automatico, ovvero senza cliccare il pulsante ma direttamente all'inserimento del "criterio"? 2) Posto che questo è il risultato che volevo ottenere, come si potrebbe ottenere lo stesso risultato senza ricorrere alla macro ma con le normali formule?
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Re: Funzione cerca.vert "estesa"

Postdi Anthony47 » 09/12/08 19:59

Per l' uso delle formule, guarda questo thread: viewtopic.php?f=26&t=76952#p436995 (il quesito di martin accodato a quello di Flash).
Le formule fornite (e poi corrette!) lavorano sullo stesso foglio del database; se ti servono su altro foglio, la cosa piu' semplice e' che le fai prima funzionare sul foglio db e poi, tramite Contr-x/enter (taglia / incolla) le sposti su altro foglio; se le incolli su una riga diversa dalla 1, prima di ricopiarle verso il basso modifica (sulla prima riga di formule) questa parte ";RIF.RIGA())-1;" in ";RIF.RIGA(A1))-1;" (ovviamente senza apici).


Se vuoi automatizzare la macro attuale:
-fai tasto dx sul tab col nome del foglio su cui inserisci le chiavi di filtro; scegli Visualizza codice
-ti si apre l' editor del vba; copia le seguenti istruzioni nel frame vuoto di dx
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:D1")) Is Nothing Then Exit Sub  '<<< Nota 1
Application.EnableEvents = False
Call Cerca             'Attiva la macro di Tribuno
Application.EnableEvents = True
End Sub

Nota 1: la macro di Tribuno ti consente di introdurre piu' chiavi di ricerca (in A1:D1), e scatta quando modifichi una di queste celle per effetto dell' istruzione marcata <<<

Se Tribuno vuole aggiungere/precisare/suggerire ancora e' ovviamente benvenuto.

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: Funzione cerca.vert "estesa"

Postdi tahcniolos » 13/12/08 09:40

Rieccomi ancora per dire che:
1) la macro automatica funziona, ma mi permetto di dire che credo ci fosse un piccolo errore nel range che doveva essere a1:d2 (che io a mia volta ho adattato al range necessario).
2) (molto più importante) Nel foglio che sto cercando di sistemare ho in realtà 12 colonne di informazioni varie riguardo alla singola vendita, mentre nel foglio risultati vorrei riportarne solo alcune (5 o 6); avevo provato, banalmente, a nascondere le colonne ma quando si riesegue la macro ricompaiono tutte. Come fare?
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Re: Funzione cerca.vert "estesa"

Postdi tahcniolos » 13/12/08 09:47

Un'altra cosa: provando ad inserire la formula =oggi() nella cella del criterio, ipotizzando un ulteriore automatismo per cui la selezione della data fosse la legata alla data in cui si volesse emettere il "reportino", la macro non funziona; come si potrebbe fare (oltre, ovviamente, ad inserire manualmente la data "consumandosi" i ditini.....)
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Re: Funzione cerca.vert "estesa"

Postdi tahcniolos » 13/12/08 09:59

Sarà l'età, oggi mi viene in mente una cosa alla volta: in prospettiva del "reportino" che sto cercando di creare, se io volessi inserire del testo prima e dopo la tabellina che il filtro mi va a creare, come posso fare? Ovvero, c'è la possibilità di fare in modo che la macro inserisca in un punto desiderato tante righe quante sono quelle contenenti le informazioni da visualizzare? Ovviamente ogni volta ci deve essere solo il giusto numero di righe presente.
Non voglio smettere di credere, non posso smettere di vivere, ma mi son perso nella vita.
Avatar utente
tahcniolos
Download Admin
 
Post: 943
Iscritto il: 08/11/05 09:21
Località: Italia

Re: Funzione cerca.vert "estesa"

Postdi Anthony47 » 20/12/08 18:31

Queste domande forse sono ancora pendenti...

Sulla macro, se vuoi copiare solo alcune celle la cosa piu' semplice e' che copi tutto secondo quanto proposto da Tribuno, poi elimini le colonne che non ti servono con una istruzione tipo
Codice: Seleziona tutto
Range("H:J,L:L,N:P").Delete Shift:=xlToLeft

(questa elimina H-I-J, L, N-O-P)

Poi mi pare che chieda come inserire un tot di righe di intestazione. Qui il mio suggerimento "low level" e' di memorizzare l' intestazione in un range noto (es AM1:AM3), poi:
-dopo "Sheets("Foglio2").Columns("F:I").ClearContents" inserisci
Codice: Seleziona tutto
Range("AM1:AM3").copy Destination:=Range("F1")

e invece di "[...]CopyToRange:=Sheets("Foglio2").Range("F1") [...] usi
Codice: Seleziona tutto
[...]CopyToRange:=Sheets("Foglio2").Range("F4")[...]


Infine, per non consumare "la tastiera" :D a mettere la data odierna puoi usare "Contr-;" (Contr + il tasto ";")

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


Torna a Applicazioni Office Windows


Topic correlati a "Funzione cerca.vert "estesa"":


Chi c’è in linea

Visitano il forum: patel e 4 ospiti