Ricerca di tre valori (numeri, date o testo). (30/04/03) Ancora un esempio scaturito da una richiesta: controllare se esistono tre valori su una stessa riga di una tabella, e se trovati selezionare (restituire) un'altro valore. La richiesta: "Se io però volessi trovare in una tabella una combinazione di numeri, esempio:12-54-33 in questa sequenza, cioè in maniera tale che il 12 sia nella colonna B, il 54 nella colonna C e il 33 nella colonna D, contemporaneamente (non uno alla volta) in maniera tale da evidenziare poi a parte in quale giorno si è verificata (o non si è verificata.....non necessariamente la combinazione deve essere presente) come posso fare?" Vorrei provare a ragionare con la testa del pellegrino neofita, che pur trovando sul sito molti esempi di come trovare un dato, si trova a chiedersi: "Ok, come si trova un dato l'ho capito, ma se i dati da trovare sono due, o tre, come faccio?" Allora vediamo: intanto devo trovare in quale modo poter dire al codice quali sono i numeri che voglio trovare. Poi devo trovare cosa dire al codice perchè mi evidenzi la cella con la data se mi trova i tre numeri. mi rispondo al primo quesito: posso usare tre celle del foglio di lavoro, dove scrivere i numeri, e poi usare i riferimenti a queste celle da usare come vettori per eseguire la ricerca; oppure, forse è meglio, usare tre InputBox, ognuna delle quali memorizzerà con l'assegnazione ad una variabile (vettore) il valore che immetterò nella InputBox. Mi sembra l'idea giusta. Ricapitoliamo: come trovare un dato l'ho capito: devo identificare un range di celle nella colonna che uso per la ricerca, applico un ciclo For Each...Next per controllare tutte le celle del range, i tre valori a questo punto me li ritrovo con le InputBox, ma non ho ancora presente come far leggere i valori nelle celle accanto ad ogni cella controllata dal ciclo. Aspetta un pò, da qualche parte ho letto che con Offset posso "mirare" ad altre celle. Ottimo, ora so cosa scrivere per controllare anche le altre celle, ma come le lego insieme le istruzioni? Vediamo un pò: io nel linguaggio parlato dico: vorrei che se il valore nella cella X e il valore nella cella Y e il valore nella cella Z; uso quindi l'operatore "e" per unire insieme le condizioni....vuoi vedere che anche il codice accetta questo sistema? (Solo che il codice ragiona in inglese e il concatenatore "E" si scrive "And"). A questo punto mi rispondo al secondo quesito, usando ancora Offset, per identificare la cella con la data. Mettiamoci al lavoro................ Il pellegrino ennius a questo punto presenta la soluzione. Vediamo una tabella d'esempio: Nella colonna A le celle con le date, che vorremo evidenziate se la ricerca di tre valori nelle colonne B-C-D saranno uguali ai valori immessi nelle inputbox. Per variare l'esempio, cercheremo due numeri ed un testo, così capiamo come diversificare l'assegnazione del "tipo" di dati assegnato ad ogni variabile.
Buon lavoro.
|