Una alternativa al metodo di Ricky, da guardare e provare, suggerisco questo metodo:
A) hai su Foglio1 la griglia degli appuntamenti, col A:F, e su Foglio2, da A1 a F10000 l' elenco come descritto nel tuo primo post. Fai tasto dx sul tab col nome "Foglio1", scegli Visualizza codice; ti si apre l' editor delle macro; inserisci questo codice nel frame di dx:
- Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[Z1] = Cells(Target.Row, 1).Value
End Sub
La macro presuppone che la cella Z1 di Foglio1 sia libera e la usa come cella di servizio.
B) Torna su Excel, e ordina per NomeCliente l' elenco di Foglio2
C) Ti crei un elenco unico di NomeCliente in col H usando Filtro Avanzato: Menu /Dati /Filtro avanzato; spunti Copia univoca dei record e Copia in altra posizione, in "Copia in" scrivi H1; Ok.
D) Ti crei un "Intervallo dinamico" chiamato Elenco: Menu /Inserisci /Nome /Desfinisci; scrivi il nome "Elenco", come "Riferito a" scriverai
- Codice: Seleziona tutto
=SCARTO(Foglio2!$H$2;0;0;CONTA.VALORI(Foglio2!$H$1:$H$10000);1)
E) Su Foglio1, in A2 (colonna NomeCliente), inserisci una convalida su "Elenco" e come Origine scrivi =Elenco
F) Ti crei un secondo intervallo dinamico chiamato Elenco1, che sara' riferito a
- Codice: Seleziona tutto
=SCARTO(Foglio2!$B$1;CONFRONTA(Foglio1!$Z$1;Foglio2!$A$1:$A$1000;0)-1;0;CONTA.SE(Foglio2!$A$1:$A$1000;Foglio1!$Z$1);1)
G) Su Foglio1,in B2 (colonna N.Telefono) inserisci una convalida su elenco e come Origine scrivi =Elenco1
H) Avrai notato che la definizione di Elenco1 ha come base Foglio2$B$1 (colonna N.Telefono nella tua "Anagrafe") ed e' usato per la convalida della col B su Foglio1.
I) Creati altri "ElencoN", tutti definiti come Elenco1 ma cambiando la "base" in Foglio2!$C$1, Foglio2!$D$1, etc, e usa questi nomi come Origine per le convalide delle ulteriori colonne nella griglia degli appuntamenti. Ma questo potrebbe non essere necessario se alcune colonne della griglia sceglierai di popolarle con Cerca.Vert (vedi avanti).
H) Copia A2:F2 e incollale verso il basso per le righe di appuntamenti che pensi di dover programmare.
In questo modo, una volta impostato in colonna A il NomeCliente, nelle colonne adiacenti avrai solo le scelte riferite alle righe che appartengono a quel NomeCliente.
Suggerisco che alcune colonne pero' non siano "compilate" ma siano popolate con una formula; ad esempio:
-N.Telaio, la puoi ottenere con un Cerca.Vert nell' anagrafe del N.di Targa;
-N.Telefono lo puoi ottenere con Cerca.Vert del NomeCliente, oppure sul N.diTarga nell' ipotesi che piu' targhe appartengano allo stesso cliente ma possano avere riferimenti telefonici diversi (la moglie, il figlio, l' amica...); in questo caso pero' dovrai spostare la colonna N.Telefono dopo la colonna Targa per usare Cerca.Vert
-Modello vettura lo puoi ottenere con Cerca.Vert sul N.diTarga, ma dopo aver spostato la colonna Modello dopo Targa
-email e' come N.Telefono
Insomma alla fine le uniche colonne su cui ti servira' la Convalida sono NomeCliente e Targa, per cui la sequenza di colonne sia in Anagrafe (Foglio2) che in appuntamenti (Foglio1) potrebbe essere
Nome Cliente- N.Targa- N.Telefono- Modello Vettura- N.Telaio- e-mail
Spero che questi spunti siano di tuo interesse; ti assicuro che e' stato difficile scriverlo, ma dovrebbe essere facile a farsi...
Ciao