Ricerca Tips
Ricercare dati in condizioni non ottimali |
Tips and Tricks - Formule |
Alcuni programmi permettono di estrarre i dati in modo molto poco friendly.
Chi lavora nel farmaceutico, per esempio, conosce bene la struttura del programma Dataview dove anziché avere, per esempio, le colonne Nome Prodotto e Regione abbiamo un'unica colonna con una struttura simile alla segente: Prodotto 1 Regione 1 Regione 2 Regione 3 Prodotto 2 Regione 1 Regione 2 Regione x
La funzioni SCARTO e CONFRONTA sono fondamentali per questo scopo (per maggiori informazioni si veda qui e qui). La strategia da usare in questo caso è individuare il range che si trova tra Prodotto 3 e Prodotto 4 e, all'interno di questo range, cercare dove si trova Regione 4. Naturalmente diamo per scontato che i dati siano ordinati in senso crescente: diversamente la formula non funzionerebbe.
Per esempio CONFRONTA("Prodotto 3"; A:A; 0) ci restituisce un numero che rappresenta la riga in cui si trova Prodotto 3 nella colonna A.
Per individuare il range che si trova tra Prodotto 3 e Prodotto 4, ipotizzando che la colonna sia la A, useremo questa formula: =SCARTO(A1; CONFRONTA("Prodotto 3"; A:A; 0) - 1; 0; CONFRONTA("Prodotto 4"; A:A; 0) - CONFRONTA("Prodotto 3"; A:A; 0); 1)
A questo punto potremo usare questo range all'interno di una funzione CERCA.VERT o SOMMA.SE. Nel caso di CERCA.VERT l'ultimo argomento di SCARTO (larghezza) va modificato in modo da includere tutte le colonne.
Per esempio, se la colonna dove si trova il dato è la B con CERCA.VERT avremo: =CERCA.VERT("*Regione 4"; SCARTO(A1; CONFRONTA("Prodotto 3"; A:A; 0) - 1; 0; CONFRONTA("Prodotto 4"; A:A; 0) - CONFRONTA("Prodotto 3"; A:A; 0), 2); 2; FALSO)
L'asterisco prima di "Regione 4" permette di ignorare gli spazi vuoti prima della parola.
Se invece usiamo SOMMA.SE dovremo ricreare il range per il terzo argomento: =SOMMA.SE(SCARTO(A1; CONFRONTA("Prodotto 3"; A:A; 0) - 1; 0; CONFRONTA("Prodotto 4"; A:A; 0) - CONFRONTA("Prodotto 3"; A:A; 0); 1); "Regione 4"; SCARTO(B1; CONFRONTA("Prodotto 3"; A:A; 0) - 1; 0; CONFRONTA("Prodotto 4"; A:A; 0) - CONFRONTA("Prodotto 3"; A:A; 0); 1)) |