Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Cerca Vert 2+ condizioni N-esimo risultato

Ultimo Aggiornamento: 26/08/2016 15:07
Post: 9
Registrato il: 05/09/2013
Città: MILANO
Età: 30
Utente Junior
2007
OFFLINE
25/08/2016 19:22

Ciao a tutti,

è da giorni che sbatto la testa su questo problema, che non riesco proprio a superare.

Mi trovo con un file su cui non posso creare celle di supporto, diciamo una specie di estrazione da database da rinnovare di frequente.

Ho necessità su questo database, in un foglio a parte, di cercare degli specifici valori, tramite una ricerca con cerca vert e 2-3-4 condizioni.

Nonostante le condizioni multiple, che posso soddisfare con un solito INDICE - CONFRONTA, possono ancora capitare più valori per cui le stesse condizioni sono soddisfatte: devo quindi tirare fuori il secondo valore, o il terzo, o il quarto.

Esiste un modo di far estrarre ad INDICE-CONFRONTA (già settato per le condizioni multiple) l'N-Esimo valore?


In alternativa uso abitualmente una funzione, trovata online, che in pratica è un cerca vert potenziato che concede di pescare l'N-ESIMO valore, ma con una sola condizione.

Riporto il relativo codice VBA:

Function NLookup(Dove As Range, Valore As Variant, Occorrenza As Long, riga As Long, colonna As Long) As Variant
Dim Contatore As Integer
Dim CellaRicerca As Range
Dim First As Range
Dim CCorrente As Range
Dim Trovato As Boolean

Contatore = 0
Trovato = False
For Each CCorrente In Dove
If CCorrente.Value = Valore Then
Contatore = Contatore + 1
End If
If Contatore = Occorrenza Then
Trovato = True
Exit For
End If
Next
If Trovato Then
NLookup = CCorrente.Offset(riga, colonna).Value
Else
NLookup = CVErr(xlErrNA)
End If
End Function



Ho provato, ma non sono stato in grado di modificare la stringa per aggiungere il controllo della seconda (terza, quarta, ecc) condizione.

Qualcuno è per caso in grado di darmi una mano?

Ringrazio per la collaborazione :)
Post: 3.528
Registrato il: 04/07/2012
Città: BARCELLONA POZZO DI GOTTO
Età: 61
Utente Master
2010
OFFLINE
25/08/2016 19:43

ciao
da quel che intuisco, credo si possa fare con funzioni tipo INDICE;AGGREGA(15;6;............), oppure il classico INDICE(PICCOLO(SE(......))), ma senza un file di esempio rappresentativo del problema e del risultato, non riesco ad essere più preciso



--------------------------------------------------
"So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
--------------------------------------------------
excel 2010 ,
Win 8
Post: 9
Registrato il: 05/09/2013
Città: MILANO
Età: 30
Utente Junior
2007
OFFLINE
25/08/2016 20:06

Allego file di esempio.
Post: 3.529
Registrato il: 04/07/2012
Città: BARCELLONA POZZO DI GOTTO
Età: 61
Utente Master
2010
OFFLINE
25/08/2016 21:34

potrebbe andare:
=INDICE(D2:D11;AGGREGA(15;6;RIF.RIGA(D2:D11)-RIF.RIGA(D2)+1/((A2:A11=I3)*(B2:B11=I4)*(C2:C11=I5));I6))

edit
ho appena visto che usi una versione precedente al 2010, pertanto non riconosce AGGREGA(), in questo caso:
=INDICE(D2:D11;PICCOLO(SE((A2:A11=I3)*(B2:B11=I4)*(C2:C11=I5);RIF.RIGA(D2:D11)-RIF.RIGA(D2)+1);I6))

da confermare come matriciale (CTRL+MAIUSCOLO+INVIO)
[Modificato da ninai 25/08/2016 21:37]



--------------------------------------------------
"So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
--------------------------------------------------
excel 2010 ,
Win 8
Post: 10
Registrato il: 05/09/2013
Città: MILANO
Età: 30
Utente Junior
2007
OFFLINE
25/08/2016 21:41

Su questo PC non ho office 2010 e quindi non posso provarla.
Se però con gli stesso dati sul tuo funziona, domani la testo sul campo di battaglia e ti faccio sapere.

Grazie mille
Post: 11
Registrato il: 05/09/2013
Città: MILANO
Età: 30
Utente Junior
2007
OFFLINE
26/08/2016 09:33

EDIT:

funziona perfettamente, grazie mille.

Se tra le condizioni volessi mettere che il valore presente in una delle colonne di controllo sia differente da un'elenco di determinati valori che ho in una colonna?

Tipo
*('Elenco Altri Soggetti'!$Y$3:$Y$30000<>$$$$$$$)

Dove $$$$$$$ è la colonna dove ho questi valori?
[Modificato da TommyLB 26/08/2016 10:44]
Post: 3.530
Registrato il: 04/07/2012
Città: BARCELLONA POZZO DI GOTTO
Età: 61
Utente Master
2010
OFFLINE
26/08/2016 11:33

Re:
TommyLB, 26/08/2016 09.33:


*('Elenco Altri Soggetti'!$Y$3:$Y$30000<>$$$$$$$)

Dove $$$$$$$ è la colonna dove ho questi valori?



non è facile capire, usando il tuo esempio, potrebbe essere che devi aggiungere il criterio così:

*(CONTA.SE($$$$$$;'Elenco Altri Soggetti'!$Y$3:$Y$30000)=0)




--------------------------------------------------
"So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
--------------------------------------------------
excel 2010 ,
Win 8
Post: 12
Registrato il: 05/09/2013
Città: MILANO
Età: 30
Utente Junior
2007
OFFLINE
26/08/2016 12:36

$$$$ è una colonna, strutturata così:

A1
1 VALORI
2 rosso
3 verde
4 arancio


Vorrei che tra i criteri di controllo mi escludesse tutti i valori che sono anche presenti nella colonna, in questo caso, A:A
Post: 3.531
Registrato il: 04/07/2012
Città: BARCELLONA POZZO DI GOTTO
Età: 61
Utente Master
2010
OFFLINE
26/08/2016 15:07

ciao
credo sia giusto il mio suggerimento. Applicalo, se non riesci , dovresti allegare un file di esempio



--------------------------------------------------
"So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
--------------------------------------------------
excel 2010 ,
Win 8
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 04:19. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com