Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

completamento automatico in convalida dati da elenco

159 views
Skip to first unread message

igno...@mailinator.com

unread,
Apr 21, 2005, 9:04:02 AM4/21/05
to
Possibile che non ci sia? Se devo scegliere da un elenco di 5000 voci
devo scorrermelo tutto?

eliano

unread,
Apr 21, 2005, 10:11:14 AM4/21/05
to

"igno...@mailinator.com" ha scritto:

> Possibile che non ci sia? Se devo scegliere da un elenco di 5000 voci
> devo scorrermelo tutto?
>
>

Ciao gnurant.
Si e per quantità superiori meglio se usi i pattini.:-))
A parte gli scherzi, credo che l'elenco in convalida abbia una capienza
massima intorno ad un migliaio di rekord.
Casella combinata, confronta, cerca.verticale ed altre non dovrebbero avere
limiti; per il Vba poi nessun problema se non i limiti di excel.
Dipende quindi da cosa ci vuoi fare, come vuoi o devi utilizzare il dato che
cerchi.
Abbi fede e sopratutto pazienza.:-))
Saluti
Eliano

igno...@mailinator.com

unread,
Apr 21, 2005, 10:24:39 AM4/21/05
to
Grazie per l'incoraggiamento.
Lasciamo perdere quella schifezza di cerca.verticale e parliamo subito
di VBA. C'è la possibilità di scrivere del codice mentre è attiva la
barra della formula, cioè mentre sto editando il contenuto di una
cella?
In altre parole, mettiamo che in A2 abbia digitato "A" e voglia far
comparire il nome del primo cliente che inizia, appunto, per "A", ma
ovviamente, subito, mentre sto ancora editando la cella A2...
Posso farlo?
Eddai su, dammi un indizio, sono ignorante lo sai!

Ignazio

unread,
Apr 21, 2005, 10:37:29 AM4/21/05
to

<igno...@mailinator.com> ha scritto nel messaggio
news:1114093479.7...@z14g2000cwz.googlegroups.com...

> Lasciamo perdere quella schifezza di cerca.verticale ...

Cioè ... cosa ti ha fatto cerca.verticale per meritare un simile
apprezzamento da parte tua?
Giusto per curiosità.

--
Ciao
Ignazio


eliano

unread,
Apr 21, 2005, 10:40:04 AM4/21/05
to

"igno...@mailinator.com" ha scritto:

Ciao gnurant!
Se ci fosse un campionato non credo che ti sarei secondo.:-))
Non credo che sia fattibile in Vba; il Vba prevede un progetto, non un fatto
estemporaneo; prova a cercare sul NG e dovrersti trovare diversi consigli in
merito a quello che tu chiami schifezza (cerca.vert), oltre ad esempi di
ricerca dei dati con funzioni Excel o sub in Vba; in funzione di quelle che
sono le tue necessità una soluzione accettabile la trovi sempre.
Saluti
Eliano

Franz

unread,
Apr 21, 2005, 12:12:45 PM4/21/05
to
<igno...@mailinator.com> ha scritto nel messaggio
news:1114093479.7...@z14g2000cwz.googlegroups.com...

> Lasciamo perdere quella schifezza di cerca.verticale

Scusa, non per farmi i fatti tuoi... :-)
Ma perchè ce l'hai tanto con la funzione CERCA.VERT?
E' una delle funzioni più utili di Excel quando si devono gestire grosse
quantità di dati, tipo elenchi prodotti o clienti, insomma dei piccoli
database...
Forse finora l'hai solo usata male e per questo non ti ha dato i risultati
attesi... :-)

Ciao

--
Franz

----------------------------------------------------------------------------------------
per rispondermi traduci InVento in inglese (no maiuscole)
----------------------------------------------------------------------------------------


eliano

unread,
Apr 21, 2005, 12:41:04 PM4/21/05
to

"Ignazio" ha scritto:

Ciao Ignazio.
Probabilmente era solo una battuta, un intercalare immotivato.
Comunque se insiste gli rivogo una della mie sub, così si scatena Mauro.:-))
Saluti
Eliano

eliano

unread,
Apr 21, 2005, 1:30:02 PM4/21/05
to

"igno...@mailinator.com" ha scritto:

Ciao gnurant,
Se sei veramente ignorante non lo so; sicuramente sei scortese.
Ti è stato chiesto in più occasioni di chiarire un concetto inaccettabile
dai più, ma nessuna reazione.
Per quanto riguarda la reazione, la attendo da Mauro.:-))
Questa sub si posiziona sul primo carattere della colonna A se questo è
uguale o maggiore del valore digitato in B1.
Per poter funzionare correttamente necessita della selezione dei dati in
colonna A.

Sub cercauno()
Dim XL As Range
Dim Iniziale
Range("A2:D50").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
[b1].Select
For Each XL In Range("A2:D50")
XL.Value = Trim(XL.Value)
Iniziale = Left(XL.Value, 1)
If Iniziale >= [b1].Value Then
XL.Activate
XL.Select
GoTo fine
End If
Next
fine:
End Sub

E ora reggiamoci le recchie perchè arriva Mauro.
Saluti a tutti
Eliano

cucchiaino

unread,
Apr 21, 2005, 3:53:15 PM4/21/05
to
igno...@mailinator.com:

> Lasciamo perdere quella schifezza di cerca.verticale ...

Il cerca.vert() ha in effetti alcuni limiti, ma da qui a buttarla nel cestino !!
Probabilmente, dopo il =SE(), è la funzione più utilizzata!


> ... e parliamo subito
> di VBA.


Hai provato a riempire una casella combinata in una userform?

Questa ha già in se il completamento automatico.

Non ho fatto però alcuna prova per verificare se ha dei limiti in lunghezza.
Vuoi provare tu?

( )---cucchiaino

igno...@mailinator.com

unread,
Apr 21, 2005, 5:04:33 PM4/21/05
to
eliano wrote:
> Ciao gnurant,
> Se sei veramente ignorante non lo so; sicuramente sei scortese.

In verità non mi sono accorto di essere stato scortese. Ho forse
offeso qualcuno? Mi sono dato dell'ignorante da solo, e a
nessun'altro... o forse non mi sono accorto di qualcosa...

> Ti è stato chiesto in più occasioni di chiarire un concetto
inaccettabile
> dai più, ma nessuna reazione.

Beh, datemi il tempo! Non passo 24 ore davanti al pc! Devo anche
mangiare, far giocare la mia bambina!

Ora non saprei giustificare la mia affermazione in modo solido. Ricordo
di aver lavorato tanti anni fa con il cerca.vert e di avere fatto una
fatica boia. Ora per quasi tutte le funzioni di ricerca uso il
confronta e mi trovo molto meglio
Però...

> Questa sub si posiziona sul primo carattere della colonna A se questo
è
> uguale o maggiore del valore digitato in B1.
> Per poter funzionare correttamente necessita della selezione dei dati
in
> colonna A.
>
> Sub cercauno()

...però forse non mi sono spiegato: ho bisogno di una ricerca
*interattiva*. Non voglio che mi venga restituito il risultato a input
della cella terminato. Ho bisogno che il suggerimento arrivi *mentre*
sto ancora editando la cella...

O forse non ho capito cosa volevi dire tu?

igno...@mailinator.com

unread,
Apr 21, 2005, 5:06:35 PM4/21/05
to
Ecco, questo mi sembra un suggerimento utile. Però secondo me la form
ha il difetto che fa perdere di vista all'utente la sua posizione sul
foglio di lavoro. C'è la possibilità di decidere la posizione della
form, per esempio ancorando il suo angolo superiore sinistro a una
determinata cella? Grazie.

Piero

unread,
Apr 22, 2005, 2:58:12 AM4/22/05
to
<igno...@mailinator.com> ha scritto nel messaggio
news:1114088642.3...@o13g2000cwo.googlegroups.com...

> Possibile che non ci sia? Se devo scegliere da un elenco di 5000 voci
> devo scorrermelo tutto?
>

Ciao,
come ti ha indicato Eliano, con VBA si può fare...
Ho trovato tempo fa un file sulla rete che calcola il codice fiscale che
consente la ricerca dei comuni d'Italia proprio a questo modo..
Non ho mai avuto il tempo di studiare (e capire) il modo con cui venga
fatto, ma se ti interessa fammi sapere e ti mando una copia del file.
--
Ciao
Piero

Leva LEDITADALNASO prima di mandarmi una e-mail


eliano

unread,
Apr 22, 2005, 3:20:02 AM4/22/05
to

"igno...@mailinator.com" ha scritto:

Ciao gnurant e baci alla bimba.
La mia battuta voleva solo essere un sollecito, forse non cortese, ma nulla
più.
Escludendo l'interattività contestuale del vba, ma anche qui ci sarebbe
molto da dire in merito agli eventi, dipende dall'uso che vuoi fare della tua
ricerca; se vuoi solo visualizzare un dato, la sub (con elemento di ricerca
esteso oltre il primo carattere e magari su una userform) può esserti utile;
ma se, come mi sembra di capire, vuoi quel dato per un uso successivo, allora
credo che il cerca.verticale od il confronta, magari con scarto, siano più
indicati; in questo caso non credo che l'ancoraggio della form ti possa
servire.
Opinioni personalissime, quindi valide solo per me.
Facci sapere e saluti a te, carezze da un nonno alla bimba.
Eliano

Ignazio

unread,
Apr 22, 2005, 3:54:01 AM4/22/05
to

"cucchiaino" <so...@excel.it> ha scritto nel messaggio
news:xn0e19y9...@powernews.libero.it...

> Il cerca.vert() ha in effetti alcuni limiti ...

Ciao Cucchiaino,
potresti chiarire a quali limiti ti stai riferendo?

--
Ciao
Ignazio


eliano

unread,
Apr 22, 2005, 4:19:02 AM4/22/05
to

"Piero" ha scritto:

Ciao Piero, ciao Ignazio.

Ciao gnurant, con la debita premessa (ripetura) che se ci fosse un
campionato io non sare secondo a nessuno.
Rileggevo la tua risposta, per cui ti inviterei a verificare:
su questo NG: http://snipurl.com/drwl
sul sito di un amico: http://www.ennius.altervista.org/formule.htm
Ce ne sarebbero tanti altri, comunque credo che questi bastino per darti
un'idea dello stato delle arti.
Facci sapere, baci alla pupa.
Eliano

Piero

unread,
Apr 22, 2005, 4:41:05 AM4/22/05
to

> Ciao Piero, ciao Ignazio.
>
> Ciao gnurant, con la debita premessa (ripetura) che se ci fosse un
> campionato io non sare secondo a nessuno.
> Rileggevo la tua risposta, per cui ti inviterei a verificare:
> su questo NG: http://snipurl.com/drwl
> sul sito di un amico: http://www.ennius.altervista.org/formule.htm
> Ce ne sarebbero tanti altri, comunque credo che questi bastino per darti
> un'idea dello stato delle arti.
> Facci sapere, baci alla pupa.
> Eliano


Ciao Eliano,
grazie per i link,
avevo avuto modo gią tempo fa di conoscere il sito di ennius... veramente
una miniera, senza nulla togliere a quello di Fernando e tutti gli altri...
:-)

Ammetto che no conoscevo invece il prono inerente il NG..
Quando dovevo cercare un argomento andavo direttamene su Google, ma credo
che alla fine i risultati siano gli stessi, o sbaglio?

Grazie ancora..

igno...@mailinator.com

unread,
Apr 22, 2005, 4:45:17 AM4/22/05
to
Ancora non ci siamo. Vedi il messaggio che ho scritto appena prima di
leggere questo tuo intervento. Bacerò la piccola, grazie :-)

igno...@mailinator.com

unread,
Apr 22, 2005, 5:01:41 AM4/22/05
to
eliano wrote:
> Ciao gnurant e baci alla bimba.
> La mia battuta voleva solo essere un sollecito, forse non cortese, ma
nulla
> più.

Tutto è bene quello che finisce bene :-)
Intanto ringrazio te e gli altri per interagire con me.

> Opinioni personalissime, quindi valide solo per me.
> Facci sapere e saluti a te, carezze da un nonno alla bimba.

Secondo me non ci siamo. Faccio un esempio del tutto equivalente a ciò
che mi coorre: devo compilare un elenco di fatture (a più colonne),
inserendo nelle celle della prima colonna i nomi dei clienti che sono
registrati su un altro foglio.
Ovviamente devo cercare la possibilità di un isnerimento agevolato per
l'utente.

Dati -> Convalida (da elenco): che fa l'utente, mi scorre in quella
finestrella i nominativi dei 5000 clienti per cercare quello giusto?

CERCA.VERT: che fa l'utente,digita "A"+invio e poi aspetta che nella
cella a fianco compaia "Abbecedari s.r.l."?, poi ritorna sulla casella
di prima e digita "Z"+invio e poi aspetta che nella cella a fianco
compaia "AZUREUS s.p.a."? [*teribbile*]

Form: che fa l'utente, deve aprire una maschera solo per completare il
nome del cliente? Stiamo parlando di un semplice elenco con nome, data,
importo e scadenza, non delle risposte al questionario censimento istat
di 48 pagine!

Comunque, sono disposto anche a usare una form (di piccole dimensioni)
o uno (strumento) casella combinata, integrandoli con del codice VBA,
purchè ci sia la possibilità di spostarli (form o casella combinata)
insieme alla selezione dell'utente: posizionandosi in A1, A2, A3, A4,
..., A10 anche la form o la casella devono apparire di conseguenza
sopra A1, A2, A3, A4, ..., A10.

Ho reso l'idea ora?

Piero

unread,
Apr 22, 2005, 5:11:41 AM4/22/05
to
<igno...@mailinator.com> ha scritto nel messaggio
news:1114159517.9...@l41g2000cwc.googlegroups.com...

Ancora non ci siamo. Vedi il messaggio che ho scritto appena prima di
leggere questo tuo intervento. Bacerņ la piccola, grazie :-)

Forse non mi sono spiegato bene..
Credo che l'esempio che ho faccia proprio quello che vuoi..
certo, non č che voglio insistere perņ, del resto devi dirmi tu se vuoi
vedere il file oppure no...

Franz

unread,
Apr 22, 2005, 5:20:16 AM4/22/05
to
"Ignazio" <i_putign...@SeScriviAvirgilio.it> ha scritto nel messaggio
news:eWFV1BxR...@TK2MSFTNGP09.phx.gbl...

Ciao Ignazio,
scusa se mi intrometto :-)
molto probabilmente si riferiva al fatto che nella tabella di ricerca la
colonna su cui si va a cercare deve essere quella più a sinistra, oppure al
fatto di poter cercare un solo campo per volta (anche se questo si può
bypassare costruendo dei "supercampi" dall'unione di più campi...)...

igno...@mailinator.com

unread,
Apr 22, 2005, 6:22:42 AM4/22/05
to
Se è così chiedo scusa. Allora aspetto avidamente il tuo file di
esempio. Puoi postarlo da qualche parte o devo segnalarti via mail il
mio indirizzo?
Grazie.

eliano

unread,
Apr 22, 2005, 6:28:02 AM4/22/05
to

"Piero" ha scritto:

> <igno...@mailinator.com> ha scritto nel messaggio
> news:1114159517.9...@l41g2000cwc.googlegroups.com...
> Ancora non ci siamo. Vedi il messaggio che ho scritto appena prima di

> leggere questo tuo intervento. Bacerò la piccola, grazie :-)


>
> Forse non mi sono spiegato bene..
> Credo che l'esempio che ho faccia proprio quello che vuoi..

> certo, non è che voglio insistere però, del resto devi dirmi tu se vuoi


> vedere il file oppure no...
>

No piero, ignorante rispondeva a me.

Vedi ignorante, in excel & vba non esistono solo alcune soluzioni fisse ed
inamovibili, per cui sta a noi scegliere le più opportune, semplici o
congeniali all'utente.
Solo per un esempio, ovviamente.
Supponiamo che tu abbia nel foglio1 il tuo database dal quale vuoi ricavare
un elenco di fatture da posizionare, sempre per esempio, nel foglio2
Nel foglio1 registra questa sub:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim r
r = 0
sopra:
r = r + 1
If Sheets(2).Cells(r, 1) = "" Then
Sheets(2).Cells(r, 1) = ActiveCell.Value
Else: GoTo sopra
End If
End Sub

Se fai doppio clic del tasto sinistro del mouse in colonna A del tuo
database (foglio1) vedrai apparire nelle celle libere della colonna A del tuo
elenco (foglio2)
lo stesso valore su cui hai doppiocliccato. (potresti riportare l'intera
riga, ad esempio).
E se è un database normalmente organizzato puoi usare tranquillamente un
cerca.vert() per riportare solo quei dati che ritieni opportuno.
Facci sapere.
Eliano

Mauro Gamberini

unread,
Apr 22, 2005, 6:45:16 AM4/22/05
to
> Dim r
r As ?

> Else: GoTo sopra

> Sheets(2).Cells(r, 1) = ActiveCell.Value

Eliano, anche tu,... ma č questa la *perniciosa*?!?!

Siamo in 4 o 5 che rispondiamo a tutto e di piů.
Proviamo di farlo meglio possibile, a cominciare
da me, mi metto davanti a tutti come
frettoloso e impreciso.

--
----------------------------
Mauro Gamberini


eliano

unread,
Apr 22, 2005, 7:07:01 AM4/22/05
to

"Mauro Gamberini" ha scritto:

> > Dim r
> r As ?
>
> > Else: GoTo sopra
>
> > Sheets(2).Cells(r, 1) = ActiveCell.Value
>

> Eliano, anche tu,... ma è questa la *perniciosa*?!?!
>
> Siamo in 4 o 5 che rispondiamo a tutto e di più.


> Proviamo di farlo meglio possibile, a cominciare
> da me, mi metto davanti a tutti come
> frettoloso e impreciso.
>

Mi scuso con te e con tutto il NG.
Non so cosa sia successo (mettere : su un else neppure un criminale), eppure
funzionava, altrimenti non l'avrei mandata.
Comunque riposto la sub:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)

Dim r As Integer


r = 0
sopra:
r = r + 1
If Sheets(2).Cells(r, 1) = "" Then
Sheets(2).Cells(r, 1) = ActiveCell.Value

Exit Sub
End If
If Sheets(2).Cells(r, 1) <> "" Then GoTo sopra
End Sub

Continuo a non capire, comunque scusate di nuovo.
Eliano

Piero

unread,
Apr 22, 2005, 7:49:05 AM4/22/05
to
<igno...@mailinator.com> ha scritto nel messaggio
news:1114165362....@o13g2000cwo.googlegroups.com...
Se č cosě chiedo scusa. Allora aspetto avidamente il tuo file di

esempio. Puoi postarlo da qualche parte o devo segnalarti via mail il
mio indirizzo?

Se mi dai un indirizzo valido te lo posto subito..

Piero

unread,
Apr 22, 2005, 7:54:30 AM4/22/05
to

"eliano" <eli...@discussions.microsoft.com> ha scritto nel messaggio
news:91C0CF03-19FE-4CB2...@microsoft.com...

>
> No piero, ignorante rispondeva a me.

Ok, no problem
:-)

Saluti...

igno...@mailinator.com

unread,
Apr 22, 2005, 8:13:31 AM4/22/05
to
Aspetto! Intanto scusa se te ti scrivo l'indirizzo un carattere alla
volta:

b
r
u
c
o

at

despammed

dot

com

igno...@mailinator.com

unread,
Apr 22, 2005, 8:14:29 AM4/22/05
to
Buon suggerimento. Grazie.

Mauro Gamberini

unread,
Apr 22, 2005, 8:59:26 AM4/22/05
to
> Non so cosa sia successo (mettere : su un else neppure un criminale),
eppure
> funzionava, altrimenti non l'avrei mandata.
>
> Mi scuso con te e con tutto il NG.
Comunque riposto la sub:
>
> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
> Boolean)
> Dim r As Integer
> r = 0
> sopra:
> r = r + 1
> If Sheets(2).Cells(r, 1) = "" Then
> Sheets(2).Cells(r, 1) = ActiveCell.Value
> Exit Sub
> End If
> If Sheets(2).Cells(r, 1) <> "" Then GoTo sopra
> End Sub
>
> Continuo a non capire, comunque scusate di nuovo.
>

Vabbč.... passo.

Perņ non prendertela 8-)

--
----------------------------
Mauro Gamberini


eliano

unread,
Apr 22, 2005, 8:59:07 AM4/22/05
to

"igno...@mailinator.com" ha scritto:

> Buon suggerimento. Grazie.
>

Ciao ignorante.
Prego. Ovviamente se abbini la ricerca, anche se non completa, con la
possibilità di andare ad incrementere l'elenco dei dati che ti servono in
maniera semplice, ad esempio il doppioclic, l'utente non dovrebbe avere
niente da recriminare.
Comunque, quello che intendevo dire è che non esiste un unico modo per la
soluzione di eventuali problemi; la flessibilità di excel e del suo vba credo
che sia enorme; sta a noi trovare il modo più giusto o coerente per risolvere.
Saluti, baci alla bimba.
Eliano

eliano

unread,
Apr 22, 2005, 10:10:04 AM4/22/05
to

"Mauro Gamberini" ha scritto:

> Vabbè.... passo.
>
> Però non prendertela 8-)
>

Quando mai, Mauro.
Ho troppa stima di persone come te per prendermela se non con me stesso.
La cosa che non capisco è che, non avendo la tua competenza e velocità da
centometrista nella scritturazione delle macro, per ogni sub che posto mi
creo un ambiente di prova in modo da non scazzare eccessivamente; e quando la
mando significa che l'ho provata in quasi tutte le situazioni ed ho inoltre
disponibile il file per una eventuale pubblicazione.
Nel caso specifico, la prima prova mi aveva riempito il foglio2 non avendo
previsto l'exit sub; inoltre non ho mai inserito i ":" dopo else; questo per
abitudine, dal momento che preferisco NON scrivere più istruzioni su una sola
riga, mancando della visualizzazione necessaria.
Inserito l' exit sub, dopo una ventina di prove, cancellazioni, prove, ho
postato la sub senza riguardarla data l'ora.
E' da notare che quando, dopo la tua comunicazione, ho tentato di eliminare
i ":" il fedifrago ce li ha riportati tranquillamente, costringendomi a
cambiare leggermente le istruzioni.
Prima o poi cercherò di capire da cosa dipende.
Cordialmente
Eliano

Mauro Gamberini

unread,
Apr 22, 2005, 10:27:06 AM4/22/05
to
[cut]
Se mi (ri)dici cosa stiamo facendo in quella macro,
proviamo di togliere quel GoTo.
Se riesci a sintetizzare(chiaramente) perchè non ho
voglia di rileggermi tutto il thread.

--
----------------------------
Mauro Gamberini


eliano

unread,
Apr 22, 2005, 10:59:08 AM4/22/05
to

"Mauro Gamberini" ha scritto:

> [cut]
> Se mi (ri)dici cosa stiamo facendo in quella macro,
> proviamo di togliere quel GoTo.
> Se riesci a sintetizzare(chiaramente) perchè non ho
> voglia di rileggermi tutto il thread.

Non so se sarò chiaro, sicuramente non sarò sintetico, della serie sarò
breve.:-))
Il foglio1 contiene un database; nel foglio2 voglio riportare un serie di
elementi del database, a mia scelta.
Avrei pensato al doppioclic del mouse sul dato che mi interessa trovato sul
foglio1 colonna A, con copia del valore cliccato sul primo rigo disponibile
di colonna A del foglio2.
In precedenza avevo rivogato all'amico Ignorante una sub con la quale il
cursore andava a posizionarsi sul primo dato di colonna A del foglio1 con il
primo carattere della stringa corrispondente ad un carattere a richiesta;
questo per limitare gli spostamenti ed in considerazione del fatto che
l'esatto contenuto della cella poteva non essere conosciuto. (Sinceramente mi
è sembrato abbastanza sul teorico).
Uso molto Il goto, in particolare quando no so come uscire da certe
situazioni; fa schifo ma, al mio livello, funge.
Saluti
Eliano

cucchiaino

unread,
Apr 22, 2005, 12:52:16 PM4/22/05
to
Franz:

> "Ignazio" <i_putign...@SeScriviAvirgilio.it> ha scritto nel messaggio
> news:eWFV1BxR...@TK2MSFTNGP09.phx.gbl...
> >
> > "cucchiaino" <so...@excel.it> ha scritto nel messaggio
> > news:xn0e19y9...@powernews.libero.it...
> >
> >> Il cerca.vert() ha in effetti alcuni limiti ...
> >
> > Ciao Cucchiaino,
> > potresti chiarire a quali limiti ti stai riferendo?
>
> Ciao Ignazio,
> scusa se mi intrometto :-)
> molto probabilmente si riferiva al fatto che nella tabella di ricerca la
> colonna su cui si va a cercare deve essere quella più a sinistra, oppure al
> fatto di poter cercare un solo campo per volta (anche se questo si può
> bypassare costruendo dei "supercampi" dall'unione di più campi...)...

Ciao ad Ignazio e Franz.

1) Uno dei limiti è sicuramente quello indicato da Franz e cioè che la colonna
dove cercare deve essere a sinistra, avrei preferito funzionasse in questo modo:

| A | B | C | D |E | F |
---+------+----+-----+---------+--+--------------------------------+
1|forza |età |nome |dove | | |
2|2 |21 |pipa |qui | |pepe |
3|3 |23 |pepe |la | | |
4|3 |23 |pupa |davanti | |forza |
5|3 |18 |papa |dietro | |=CERCA.VERT(F2;C1:C10;-2;FALSO) |
6|4 |19 |pipi |difronte | | |
7|5 |21 |pupu |sotto | |età |
8|6 |22 |papi |sopra | |=CERCA.VERT(F2;C1:C10;-1;FALSO) |
9|7 |41 |popò | | | |
10|8 |23 |pipe |lontano | |nome |
11| | | | | |=CERCA.VERT(F2;C1:C10;0;FALSO) |
12| | | | | | |
13| | | | | |dove |
14| | | | | |=CERCA.VERT(F2;C1:C10;1;FALSO) |


E cioè che il campo zona corrispondesse ad un unica colonna e poi ti
permettesse di spostarti verso destra o verso sinistra.

------------


2) Non è normale che dia ZERO quando trova un vuoto.

------------

3) Quando si elimina o si inserisce una colonna nella tabella, Excel aggiorna i
riferimenti agli indirizzi ma non quello relativo alla posizione (terzo
parametro)

Rimane comunque una funzione utilissima.

( )---cucchiaino

Mauro Gamberini

unread,
Apr 22, 2005, 12:58:26 PM4/22/05
to
> Il foglio1 contiene un database; nel foglio2 voglio riportare un serie di
> elementi del database, a mia scelta.
> Avrei pensato al doppioclic del mouse sul dato che mi interessa trovato
sul
> foglio1 colonna A, con copia del valore cliccato sul primo rigo
disponibile
> di colonna A del foglio2.
>

*Se* ho capito bene:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)

With Worksheets("Foglio2")

If ActiveCell.Value <> "" Then
.Range("A65536").End(xlUp).Offset(1, 0).Value = ActiveCell.Value
End If

End With

End Sub

Nel modulo del Foglio1.

--
----------------------------
Mauro Gamberini


eliano

unread,
Apr 22, 2005, 1:29:03 PM4/22/05
to

"Mauro Gamberini" ha scritto:

Ciao Mauro.
mi sono spostato per la visibilità.
Hai capito benissimo, funziona perfettamente, è snella, lineare, gradevole,
della serie arrubala subito.
Grazie, ma visto che ci sei approfitto della tua cortesia.
La sub propinata in precedenza, quella relativa alla ricerca eventuale di un
rekord collimante per il primo carattere richiesto, penso che necessiti delle
tue cure.
In particolare per quanto riguarda la lunghezza dell'elemento di ricerca
inserito in una inputbox che potrebbe essere variabile
L'ho fatta, funziona, ma la sto per distruggere, dato che fa un po' schifo.
Risposte negative ed eventuali vaffa sono comunque bene accetti.
Grazie anticipate.
Eliano

Maurizio Borrelli

unread,
Apr 22, 2005, 2:21:41 PM4/22/05
to
"cucchiaino" ha scritto nel messaggio
news:xn0e1b81...@powernews.libero.it...
> Franz:
> > "Ignazio" ha scritto nel messaggio
> > news:eWFV1BxR...@TK2MSFTNGP09.phx.gbl...
> > > "cucchiaino" ha scritto nel messaggio

> > > news:xn0e19y9...@powernews.libero.it...
> > >> Il cerca.vert() ha in effetti alcuni limiti ...
> > > potresti chiarire a quali limiti ti stai riferendo?
> > scusa se mi intrometto :-)
> > molto probabilmente si riferiva al fatto che nella tabella di ricerca la
> > colonna su cui si va a cercare deve essere quella più a sinistra, oppure
> > al fatto di poter cercare un solo campo per volta (anche se questo si
può bypassare costruendo dei "supercampi" dall'unione di più campi...)...
> 1) Uno dei limiti è sicuramente quello indicato da Franz e cioè che la
> colonna dove cercare deve essere a sinistra, avrei preferito funzionasse
in questo modo:
> | A | B | C | D |E | F |
> ---+------+----+-----+---------+--+--------------------------------+
> 1|forza |età |nome |dove | | |
> 2|2 |21 |pipa |qui | |pepe |
> 3|3 |23 |pepe |la | | |
> 4|3 |23 |pupa |davanti | |forza |
> 5|3 |18 |papa |dietro | |=CERCA.VERT(F2;C1:C10;-2;FALSO) |
> 6|4 |19 |pipi |difronte | | |
> 7|5 |21 |pupu |sotto | |età |
> 8|6 |22 |papi |sopra | |=CERCA.VERT(F2;C1:C10;-1;FALSO) |
> 9|7 |41 |popò | | | |
> 10|8 |23 |pipe |lontano | |nome |
> 11| | | | | |=CERCA.VERT(F2;C1:C10;0;FALSO) |
> 12| | | | | | |
> 13| | | | | |dove |
> 14| | | | | |=CERCA.VERT(F2;C1:C10;1;FALSO) |
>
> E cioè che il campo zona corrispondesse ad un unica colonna e poi ti
> permettesse di spostarti verso destra o verso sinistra.
> 2) Non è normale che dia ZERO quando trova un vuoto.
> 3) Quando si elimina o si inserisce una colonna nella tabella, Excel
> aggiorna i riferimenti agli indirizzi ma non quello relativo alla
posizione (terzo parametro)
> Rimane comunque una funzione utilissima.

Ciao, cucchiaino.

Allora lo vedi che aveva ragione chi diceva di trovarsi meglio con
CONFRONTA? (E INDICE, ovviamente). Mi spiace ma non ricordo chi fosse. Io
sono abbastanza d'accordo con lui ma in realta` le cose stanno in un altro
modo: a volte va bene CERCA.VERT, a volta INDICE e CONFRONTA ma tutto
dipende da chi e come ha impostato la struttura dei dati; per cui a volte
non va bene *nessuna* delle funzioni di Excel perche` bisognerebbe
semplicemente segare i ditini a chi ha impostato il foglio.

Nel caso che ci proponi io mi comporterei cosi`:

| F |
--+-------------------------------------------------------------+
2|pepe |
3| |
4|forza |
5|=INDICE(A2:D10;CONFRONTA(F2;C2:C10;0);CONFRONTA(F4;A1:D1;0)) |
6| |
7|età |
8|=INDICE(A2:D10;CONFRONTA(F2;C2:C10;0);CONFRONTA(F7;A1:D1;0)) |
9| |
10|nome |
11|=INDICE(A2:D10;CONFRONTA(F2;C2:C10;0);CONFRONTA(F10;A1:D1;0))|
12| |
13|dove |
14|=INDICE(A2:D10;CONFRONTA(F2;C2:C10;0);CONFRONTA(F13;A1:D1;0))|

(ho eliminato i riferimenti assoluti per avere una riga piu` corta).

o, piu` probaile, cosi`:

| F |
---+----------------------------------------------------+
1|pepe |
2|=CONFRONTA($F$1;$C$2:$C$10;0) |
3| |
4|forza |
5|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F4;$A$1:$D$1;0)) |
6| |
7|età |
8|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F7;$A$1:$D$1;0)) |
9| |
10|nome |
11|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F10;$A$1:$D$1;0)) |
12| |
13|dove |
14|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F13;$A$1:$D$1;0)) |

--
Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
X
--------


Maurizio Borrelli

unread,
Apr 22, 2005, 2:41:20 PM4/22/05
to
<igno...@mailinator.com> ha scritto nel messaggio
news:1114088642.3...@o13g2000cwo.googlegroups.com...
> Possibile che non ci sia? Se devo scegliere da un elenco di 5000 voci
> devo scorrermelo tutto?

Ciao, tutti.

Fatemi capire... ma si sta parlando di una cosa simile a questo abbozzo?

| F |
--+---------+
1|pippo |
2|pluto |
3|paperino |
4|topolino |
5|minnie |
\Foglio1/

Su un foglio piazzare una ComboBox (ComboBox1) con:

ListFillRange: F1:F5

e sperimentare con il codice seguente:

' Foglio1 Worksheet
'
Option Base 0
Option Compare Binary
Option Explicit

Private Sub ComboBox1_Change()
Me.Application.ActiveCell.Value = Me.ComboBox1.Text

End Sub

Private Sub ComboBox1_GotFocus()
With Me.ComboBox1
.Value = Me.Application.ActiveCell.Value
End With

End Sub

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger _
, ByVal Shift As Integer)
If KeyCode = 9 Then
Me.Application.ActiveCell.Offset(, 1).Select
End If

End Sub

Private Sub Worksheet_SelectionChange( _
ByVal Target As Range)
Dim objXlRngIntersect As Excel.Range
Dim objXlRngValidation As Excel.Range
Dim blnIntersect As Boolean

Set objXlRngValidation = Me.Range("C10")
Set objXlRngIntersect = Me.Application.Intersect(Target _
, objXlRngValidation)
blnIntersect = Not (objXlRngIntersect Is Nothing)
If (blnIntersect) Then
With Me.ComboBox1
.Left = objXlRngValidation.Left
.Top = objXlRngValidation.Top
.Width = objXlRngValidation.Width
.Visible = True
.Activate
End With

Else
Me.ComboBox1.Visible = False

End If

Set objXlRngIntersect = Nothing
Set objXlRngValidation = Nothing

End Sub

Maurizio Borrelli

unread,
Apr 22, 2005, 2:45:34 PM4/22/05
to
"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:eABBep2R...@tk2msftngp13.phx.gbl...

> <igno...@mailinator.com> ha scritto nel messaggio
> news:1114088642.3...@o13g2000cwo.googlegroups.com...
> > Possibile che non ci sia? Se devo scegliere da un elenco di 5000 voci
> > devo scorrermelo tutto?
[...]

> | F |
> --+---------+
> 1|pippo |
> 2|pluto |
> 3|paperino |
> 4|topolino |
> 5|minnie |
> \Foglio1/
> Su un foglio piazzare una ComboBox (ComboBox1)
[...]

Ops... S'intenda: "Sul foglio". (Foglio1)

cucchiaino

unread,
Apr 22, 2005, 2:44:22 PM4/22/05
to
Maurizio Borrelli:

> Ciao, cucchiaino.

Ciao Maurizio.


> Allora lo vedi che aveva ragione chi diceva di trovarsi meglio con
> CONFRONTA? (E INDICE, ovviamente)

Certo. Perchè lo chiedi a me?

> Mi spiace ma non ricordo chi fosse.

Penso si tratti di Ivano.


> Io
> sono abbastanza d'accordo con lui ma in realta` le cose stanno in un altro
> modo: a volte va bene CERCA.VERT, a volta INDICE e CONFRONTA

Diciamo che CERCA.VERT è una versione ridotta della coppia INDICE e CONFRONTA
e, quindi, limitata.


> ma tutto
> dipende da chi e come ha impostato la struttura dei dati; per cui a volte

> non va bene nessuna delle funzioni di Excel perche` bisognerebbe


> semplicemente segare i ditini a chi ha impostato il foglio.

D'accordissimo! L'esempio l'ho tirato fuori solo per spiegare il MIO ipotetico
CERCA.VERT.

> Nel caso che ci proponi io mi comporterei cosi`:

[ ]


> (ho eliminato i riferimenti assoluti per avere una riga piu` corta).

Questo va a vantaggio del MIO CERCA.VERT!

> o, piu` probaile, cosi`:
>
> | F |
> ---+----------------------------------------------------+
> 1|pepe |
> 2|=CONFRONTA($F$1;$C$2:$C$10;0) |
> 3| |
> 4|forza |
> 5|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F4;$A$1:$D$1;0)) |
> 6| |
> 7|età |
> 8|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F7;$A$1:$D$1;0)) |
> 9| |
> 10|nome |
> 11|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F10;$A$1:$D$1;0)) |
> 12| |
> 13|dove |
> 14|=INDICE($A$2:$D$10;$F$2;CONFRONTA(F13;$A$1:$D$1;0)) |


Non ci piove.



( )---cucchiaino

Maurizio Borrelli

unread,
Apr 22, 2005, 2:58:20 PM4/22/05
to
"cucchiaino" ha scritto nel messaggio
news:xn0e1bb0...@powernews.libero.it...
> Maurizio Borrelli:

> > Allora lo vedi che aveva ragione chi diceva di trovarsi meglio con
> > CONFRONTA? (E INDICE, ovviamente)
> Certo. Perchè lo chiedi a me?

Boh?... Thread ricco mi ci ficco... :)

[...]


> > (ho eliminato i riferimenti assoluti per avere una riga piu` corta).
> Questo va a vantaggio del MIO CERCA.VERT!

Peccato non esista. :)

Pero' la questione riferimenti assoluti riguarderebbe anche il tuo
CERCA.VERT visto che mi servono esclusivamente per copiare in basso la
formula. ;-)

igno...@mailinator.com

unread,
Apr 22, 2005, 6:00:05 PM4/22/05
to
> > Allora lo vedi che aveva ragione chi diceva di trovarsi meglio
con
> > CONFRONTA? (E INDICE, ovviamente)
>
> Certo. Perchè lo chiedi a me?
>
>
>
> > Mi spiace ma non ricordo chi fosse.
>
> Penso si tratti di Ivano.

Sono stato io a dirlo.

Franz

unread,
Apr 22, 2005, 6:08:06 PM4/22/05
to
"cucchiaino" <so...@excel.it> ha scritto nel messaggio
news:xn0e1b81...@powernews.libero.it...

> 2) Non è normale che dia ZERO quando trova un vuoto.

Cosa intendi? Generalmente se non trova il valore restituisce #N/D...

> 3) Quando si elimina o si inserisce una colonna nella tabella, Excel
> aggiorna i
> riferimenti agli indirizzi ma non quello relativo alla posizione (terzo
> parametro)

questo limite è aggirabile con l'utilizzo della funzione CONFRONTA, al posto
di utilizzare direttamente il numero della colonna...

cucchiaino

unread,
Apr 23, 2005, 3:34:10 AM4/23/05
to
Franz:

Ciao Franz.

> "cucchiaino" <so...@excel.it> ha scritto nel messaggio
> news:xn0e1b81...@powernews.libero.it...
>
> > 2) Non è normale che dia ZERO quando trova un vuoto.
>
> Cosa intendi? Generalmente se non trova il valore restituisce #N/D...

Mi riferisco al caso in cui il valore da restituire è una cella vuota.

> > 3) Quando si elimina o si inserisce una colonna nella tabella, Excel
> > aggiorna i
> > riferimenti agli indirizzi ma non quello relativo alla posizione (terzo
> > parametro)
>
> questo limite è aggirabile con l'utilizzo della funzione CONFRONTA, al posto
> di utilizzare direttamente il numero della colonna...

Che i limiti sono aggirabili lo ha dimostrato Maurizio B., resta il fatto che
così com'è la funzione CERCA.VERT ce l'ha!


Ripeto ulteriormente che la funzione è utilissima e molto utilizzata per tutti
(tanti) i casi in cui è sufficiente, basta un pò di attenzione.


( )---cucchiaino

Franz

unread,
Apr 23, 2005, 5:34:32 AM4/23/05
to
"cucchiaino" <so...@excel.it> ha scritto nel messaggio
news:xn0e1c7y...@powernews.libero.it...
> Franz:
>
> Ciao Franz.

Ciao Cucchiaino

>> > 2) Non č normale che dia ZERO quando trova un vuoto.


>>
>> Cosa intendi? Generalmente se non trova il valore restituisce #N/D...
>

> Mi riferisco al caso in cui il valore da restituire č una cella vuota.

Anche questo č un limite aggirabile, ma, come dicevi prima tu, č pur sempre
un limite... :-)

>> > 3) Quando si elimina o si inserisce una colonna nella tabella, Excel
>> > aggiorna i
>> > riferimenti agli indirizzi ma non quello relativo alla posizione (terzo
>> > parametro)
>>

>> questo limite č aggirabile con l'utilizzo della funzione CONFRONTA, al

>> posto
>> di utilizzare direttamente il numero della colonna...
>
> Che i limiti sono aggirabili lo ha dimostrato Maurizio B., resta il fatto
> che

> cosě com'č la funzione CERCA.VERT ce l'ha!

Purtroppo, fino a quando alla Microsoft non si decidono a migliorarla, o a
costruirne un'altra piů evoluta e flessibile, tocca tenersela cosě com'č,
aggirandone i limiti quando č possible, cioč quasi sempre..

> Ripeto ulteriormente che la funzione č utilissima e molto utilizzata per
> tutti
> (tanti) i casi in cui č sufficiente, basta un pň di attenzione.

Sono pienamente d'accordo... Non č mai tropa l'attenzione... :-)

Franz

unread,
Apr 23, 2005, 8:07:35 AM4/23/05
to
"eliano" <eli...@discussions.microsoft.com> ha scritto nel messaggio
news:782429FB-D1C3-47A0...@microsoft.com...
>
>
> http://www.ennius.altervista.org/formule/form4.htm

Ciao Eliano,
articolo molto interessante... :-)

Comunque, non fa altro che avvalorare ciň di cui si discuteva prima, cioč
che:
1) la funzione CERCA.VERT ha dei limiti;
2) č possibile, con molta fantasia e l'utilizzo di altre funzioni, quali
SCARTO, CONFRONTA, ecc., aggirare i limiti di CERCA.VERT;
3) speriamo, ed attendiamo fiduciosi, che, prima o poi, Microsoft si decida
ad implementare un CERCA.VERT piů flessibile, utilizzabile anche dall'utente
"medio"... Anche se, come ho letto sul NG, non č ancora chiaro che tipo di
utente sia... :-)

Mauro Gamberini

unread,
Apr 23, 2005, 11:57:02 AM4/23/05
to
[cut+

Di passaggio.
Ci guardo martedě.
Buon(lungo) fine settimana anche a te
(e a tutti quelli che leggono).

--
----------------------------
Mauro Gamberini


Mauro Gamberini

unread,
Apr 24, 2005, 12:12:27 PM4/24/05
to
[cut]

Mi dispiace ma non riesco a capire dove dobbiamo arrivare...

--
----------------------------
Mauro Gamberini


Ignazio

unread,
Apr 25, 2005, 10:57:18 AM4/25/05
to

"Franz" <fra...@InVento.it> ha scritto nel messaggio
news:e$W9T0$RFHA...@TK2MSFTNGP10.phx.gbl...

> 1) la funzione CERCA.VERT ha dei limiti;
> 2) č possibile, con molta fantasia e l'utilizzo di altre funzioni, quali
> SCARTO, CONFRONTA, ecc., aggirare i limiti di CERCA.VERT;
> 3) speriamo, ed attendiamo fiduciosi, che, prima o poi, Microsoft si
decida
> ad implementare un CERCA.VERT piů flessibile

Ciao Franz, ciao a tutti,
e se nel frattempo provassimo a definire una funzione personalizzata?
Secondo voi, tra l'uso della combinazione delle funzioni SCARTO e CONFRONTA
e l'uso di una eventuale funzione personalizzata, quale soluzione sarebbe da
preferire?

--
Ciao
Ignazio


Franz

unread,
Apr 25, 2005, 2:02:30 PM4/25/05
to
"Ignazio" <i_putign...@SeScriviAvirgilio.it>ha scritto nel messaggio
%23lZiSaa...@TK2MSFTNGP15.phx.gbl

> "Franz" <fra...@InVento.it> ha scritto nel messaggio
> news:e$W9T0$RFHA...@TK2MSFTNGP10.phx.gbl...
>
>> 1) la funzione CERCA.VERT ha dei limiti;

>> 2) è possibile, con molta fantasia e l'utilizzo di altre funzioni,


>> quali SCARTO, CONFRONTA, ecc., aggirare i limiti di CERCA.VERT;
>> 3) speriamo, ed attendiamo fiduciosi, che, prima o poi, Microsoft si

>> decida ad implementare un CERCA.VERT più flessibile


>
> Ciao Franz, ciao a tutti,
> e se nel frattempo provassimo a definire una funzione personalizzata?
> Secondo voi, tra l'uso della combinazione delle funzioni SCARTO e
> CONFRONTA e l'uso di una eventuale funzione personalizzata, quale
> soluzione sarebbe da preferire?

Ciao Ignazio e ciao a tutto il NG,
sì, in realtà si potrebbe provare a costruire una UDF, magari anche con
l'intento di proporla alla Microsoft, affinchè la integri in Excel... :-)

Ciao e buona liberazione (anche se ormai è quasi finita... :-))

0 new messages