|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
25-11-2009, 17.39.47 | #1 |
Sospeso
Registrato: 25-03-2008
Messaggi: 247
|
Ricerca di 2 condizioni in EXCEL
Sarebbe utile una funzione (o macro) di ricerca di valori simile a cerca.vert in Excel, ma che trovasse 2 condizioni: ad esempio dati cognome e nome in due campi diversi trovasse indirizzo in un terzo campo. Ciò dovrebbe essere svolto anche in caso di cognomi uguali, ma nomi diversi, cioè che sapesse selezionare Rossi Mario anche se esiste, prima di questo, Rossi Antonio. mi sono spiegato sufficientemente? grazie a chi mi saprà fornire indicazioni. Riccardo |
30-11-2009, 17.04.37 | #2 |
Sospeso
Registrato: 25-03-2008
Messaggi: 247
|
Ricerca 2 Condizioni
Salve,
intanto che attendevo una risposta da qualcuno, mi sono dato da fare e, con una certa soddisfazione, sono arrivato al risultato desiderato. Anche se dubito che ci sia qualcuno interessato, data la valanga di risposte che mi ha sommerso, pubblico qui di seguito la mia funzione di ricerca di 2 condizioni a beneficio di quei 3 o 4 che potessero essere interessati ad una soluzione dell'argomento. Function Trova2Condiz(WS$, Zona1, cond1, Zona2, cond2, Offset) ' TROVA Risultato di 2 CONDIZIONI in Campo Offset Numrighe = ContaRighe(WS$, 1, 3) For f = 1 To Numrighe Cella1 = Trim(UCase(Cells(f, Zona1.Column))) Cella2 = Trim(UCase(Cells(f, Zona2.Column))) If Cella1 = Trim(UCase(cond1)) And Cella2 = Trim(UCase(cond2)) Then Cella$ = Cells(f, Offset).Value Exit For End If Next f Trova2Condiz = Cella$ End Function 'Trova2Condiz Function ContaRighe(WS$, MinCol, MaxCol) ' Scansiona tutti i campi di WS$ = WorkSheet, da MinCol a MaxCol, ' conteggiando il massimo numero di riga fra tutte le colonne ' Se non si conosce il numero di colonne impegnato nel foglio basta assegnare il numero massimo (WS$; 1, 256) ' Se si vuole solo il numero di righe di un campo, basta assegnare MinCol = MaxCol es. ContaRighe(WS$; 3; 3) Dim Contatore ' Contatore Utilizzato per le Righe For COLONNA = MinCol To MaxCol Ur = Worksheets(WS$).Cells(65536, COLONNA).End(xlUp).Row ' Ur = Ultima riga valore = Worksheets(WS$).Cells(Ur, COLONNA).Value ' serve per intercettare cella vuota in riga 1 che darebbe 'valore 1 anche per riga vuota; così se devo conteggiare un campo vuoto mi ritorna 0 (Zero) anziché 1 If Ur = 1 And valore = "" Then Ur = 0 If Contatore < Ur Then Contatore = Ur Next COLONNA ContaRighe = Contatore ' numero massimo di righe impegnato nelle colonne da MinCol a MaxCol di WS$ End Function Aggiungo i seguenti commenti 1 ) La funzione accessoria Contarighe() è necessaria perché non sempre la tabella sarà indicata con le doppie coordinate righe-colonne (zona 1 e 2), ma talvolta (secondo me più spesso) sarà indicata col solo nome di colonna (es. A:A o F:F, ecc.) 2) Le funzioni Trim e Ucase sono utili, anche se non strettamente indispensabili, per intercettare errori di battitura (mario rossi = Mario ROSSI) e così pure l'eliminazione di spazi esterni (iniziali e finali) in soprannumero purché non centrali); per il caso di spazi centrali ho predisposto una funzione TrimCar che qui non ho riproposto perché non viene richiamata da questo programma. 3) Offset è la colonna dalla quale estrarre il dato desiderato (dove 1=colonna A, 2=B, ecc.). Faccio osservare che mentre con Cerca.Vert non si può andare a ritroso nella colonna del dato da trovare, rispetto alla colonna di ricerca della condizione, nel mio programma ciò è possibile; quindi posso ad esempio cercare 2 condizioni rispettivamente nelle colonne B:B e D ed estrapolare il dato dalla colonna A:A 4) esempio di sintassi di chiamata (nel mio caso la funzione risiede nel personal.xls, per un utilizzo frequente): =personal.xls!Trova2Condiz("Elenco Clienti-CN"; B:B; E26; D; F26; 1) dove: - "Elenco Clienti-CN" è il mio database o tabellone in cui ricercare le condizioni e i dati da estrapolare - B:B e D sono i campi in cui ricercare le condizioni assegnate rispettivamente in E26 e F26 - "1" è l'Offset o colonna da cui estrapolare il dato; la colonna può essere qualsiasi, compresa la colonna di ricerca (anche se non avrebbe senso restituire lo stesso dato ricercato come condizione). Mi rendo conto che più difficile da spiegare che da capire, basta un'occhiata a persona competente per vedere la banalità della funzione; però funziona e bene anche! Grazie a tutti per l'interessamento Riccardo |
17-03-2010, 19.00.48 | #3 |
Newbie
Registrato: 17-03-2010
Messaggi: 3
|
Ciao,
un altro sistema molto efficace è quello di creare una chiave di ricerca univoca con le colonne che ti servono. La chiave ovviamente sarà posizionata su una nuova colonna (a sinistra del blocco di dati). Sulla nuova colonna farai la ricerca (con CERCA.VERT / vLookUp) della chiave che ti serve. Il tutto via VBA o a mano. Ultima modifica di Superbisco : 18-03-2010 alle ore 17.10.36 |
18-03-2010, 10.52.13 | #4 |
Newbie
Registrato: 18-03-2010
Messaggi: 2
|
Salve, non so se scrivo nel postogiusto, ma ho un problema simile al tuo.
Devo fare una ricerca con due chiavi, ho un tipo di prodotto e un tipo di lavorazione e devo andare a pescare in un altro foglio il tempo massimo che si può impiegare per compiere auel tipo di lavorazione su quel tipo di prodotto, mi avete caipto?! La tabella coi tempi massimi è disposta così: - Nella colonna A ho inserito i vari tipi di prodotti e poi per ogni prodotto ho inserito nelle celle sucessive i vari tempi massimi. Come posso fare?! Vi ringrazio! |
18-03-2010, 15.40.31 | #5 | |
Junior Member
Registrato: 15-06-2005
Messaggi: 74
|
Quota:
Probabilmente avrei risolto nello stesso modo, creando una chiave univoca con un CONCATENA... e poi una funzione di ricerca. La stessa soluzione penso sia applicabile per il problema di huber77 |
|
19-03-2010, 11.25.19 | #6 |
Newbie
Registrato: 18-03-2010
Messaggi: 2
|
Ho risolto con questo metodo:
=SCARTO(Generale!$A$2;CONFRONTA(E3;Generale!$A$3:$ A$67;0);CONFRONTA(G3;Generale!$B$2:$AM$2;0);1;1) Funziona alla perfezione, ora ho un altro problema, devo andare a rilevare i tempi di lavorazione di ogni prodotto e fare la media, questi tempi sono in una tabella che compilo giorno per giorno ( a scalare in base alla data e su fogli diversi per mesi diversi) e ho più tabelle da dove andare a prendere i valori (ogni operai ha la sua tabella su un foglio excel distinto). Non saprei proprio da che parte iniziare, qualcuno potrebbe indicarmi una via?!? |
19-03-2010, 17.45.51 | #7 |
Newbie
Registrato: 17-03-2010
Messaggi: 3
|
parti dal chiamare tutti i fogli in maniera "recuperabile" da una funzione excel.
secondo me però, è il momento di usare una macro.... |
11-02-2013, 16.19.59 | #8 | |
Newbie
Registrato: 11-02-2013
Messaggi: 1
|
Rif: Ricerca di 2 condizioni in EXCEL
Quota:
|
|
16-06-2013, 20.35.10 | #9 |
Newbie
Registrato: 16-06-2013
Messaggi: 1
|
Rif: Ricerca di 2 condizioni in EXCEL
Salve, spero che ci sia qualcuno che mi risponda.... anche io ho la necessità di fare un cerca.vert con due variabili, una è la data e l'altra un nome, questi dati deve andarli a cercare in un altro foglio in cui la data può essere doppia, e il nome quindi può trovarsi nella seconda o terza...ecc. riga, una volta trovati questi due dati mi deve dare il terzo dato che mi interessa. Onestamente sono una schiappa.... quindi la funzione spiegata in alto per me è arabo! Se qualcuno me la può spiegare come la spiegherebbe ad un bambino lo ringrazio anticipatamente!
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Ricerca veloce da elenco a discesa in excel | mmpavane | Office suite | 2 | 16-01-2009 10.39.03 |
Formula Excel x ricerca | nwinx | Office suite | 0 | 03-11-2006 12.12.52 |
[VB] File excel con funzione di ricerca | Longhorn | Programmazione | 0 | 22-01-2006 19.30.22 |
Google Trick #2: restringere la ricerca a parti specifiche della pagina [LUNGO] | realtebo | Internet e Reti locali | 2 | 16-03-2005 07.14.22 |