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

funzione grande con condizione

752 views
Skip to first unread message

kkxx

unread,
Jun 6, 2012, 8:27:37 AM6/6/12
to
E' possibile combinare la funzione grande con una condizione? Cioè dato un
insieme di elementi posso prendere il 1,2 o il 3 con la condizione che
appartengano ad un determinato gruppo? Ad es.

caio 100 italia
tizio 200 italia
semproniio 300 italia
giovanni 200 francia
francesco 1000 germania
edoardo 200 francia
gisella 200 germania
domenico 50 francia
andrea 2000 germania


vorrei sapere i primi 3 per l'italia, francia e germania


paoloard

unread,
Jun 6, 2012, 11:11:04 AM6/6/12
to


"kkxx" ha scritto nel messaggio news:jqnibl$opk$1...@speranza.aioe.org...

E' possibile combinare la funzione grande con una condizione? Cioč dato un
insieme di elementi posso prendere il 1,2 o il 3 con la condizione che
appartengano ad un determinato gruppo? Ad es.

caio 100 italia
tizio 200 italia
semproniio 300 italia
giovanni 200 francia
francesco 1000 germania
edoardo 200 francia
gisella 200 germania
domenico 50 francia
andrea 2000 germania


vorrei sapere i primi 3 per l'italia, francia e germania
********************************

Se non vi sono valori doppi:
i tuoi dati nelle colonne ABC, il nome della regione da cercare in D2, usa
questa:
=INDICE($A$1:$A$100;CONFRONTA(GRANDE(SE($C$1:$C$100=$D$2;$B$1:$B$100);RIF.RIGA(A1));$B$1:$B$100;0))
la formula č matriciale, va confermata con Ctrl+Maiusc+Invio

-- ciao paoloard
http://riolab.org

paoloard

unread,
Jun 6, 2012, 11:12:16 AM6/6/12
to


"paoloard" ha scritto nel messaggio news:jqnru6$9c0$1...@dont-email.me...
dimenticavo: da copiare in basso per tre celle.

Andrea.9

unread,
Jun 6, 2012, 11:30:38 AM6/6/12
to
> Se non vi sono valori doppi:
> i tuoi dati nelle colonne ABC, il nome della regione da cercare in D2, usa
> questa:
> =INDICE($A$1:$A$100;CONFRONTA(GRANDE(SE($C$1:$C$100=$D$2;$B$1:$B$100);RIF.RIGA(A1));$B$1:$B$100;0))
> la formula è matriciale, va confermata con Ctrl+Maiusc+Invio

ciao paolo
battuto sul tempo e quasi uguale (però la mia è + corta :-p (3 punti a
me?))
in riga 1 le etichette ed i paesi da ricercare
=INDICE($A$2:$A$10;CONFRONTA(GRANDE(($C$2:$C$10=E$1)*($B$2:$B
$10);RIF.RIGA(A1));$B$2:$B$10;0))
anche questa funziona solo se non ci sono valori doppi ed è
matriciale.
però mi sa che ci sentiremo dire che i doppioni ci sono eccome.
ciao
andrea

kkxx

unread,
Jun 6, 2012, 11:33:07 AM6/6/12
to

"Andrea.9" <a.nove...@dappolonia.it> ha scritto nel messaggio
news:08d5ac4e-3d3c-4664...@b26g2000vbt.googlegroups.com...
>
intanto grazie, vedo di adattarla alla mia esigenza, in effetti la
possibilit� che ci siano doppioni � remota, ma potrebbe capitare. Vi
aggiorno
grazie mille


paoloard

unread,
Jun 6, 2012, 1:45:54 PM6/6/12
to


"Andrea.9" ha scritto nel messaggio
news:08d5ac4e-3d3c-4664...@b26g2000vbt.googlegroups.com...

> Se non vi sono valori doppi:
> i tuoi dati nelle colonne ABC, il nome della regione da cercare in D2, usa
> questa:
> =INDICE($A$1:$A$100;CONFRONTA(GRANDE(SE($C$1:$C$100=$D$2;$B$1:$B$100);RIF.RIGA(A1));$B$1:$B$100;0))
> la formula č matriciale, va confermata con Ctrl+Maiusc+Invio

ciao paolo
battuto sul tempo e quasi uguale (perň la mia č + corta :-p (3 punti a
me?))
in riga 1 le etichette ed i paesi da ricercare
=INDICE($A$2:$A$10;CONFRONTA(GRANDE(($C$2:$C$10=E$1)*($B$2:$B
$10);RIF.RIGA(A1));$B$2:$B$10;0))
anche questa funziona solo se non ci sono valori doppi ed č
matriciale.
perň mi sa che ci sentiremo dire che i doppioni ci sono eccome.
ciao
andrea
***********************************

3 punti a te :-)
ora la soluzione con doppioni ;-) perň per me domani, questa sera non ho piů
tempo.

Andrea.9

unread,
Jun 7, 2012, 11:18:32 AM6/7/12
to
>> però mi sa che ci sentiremo dire che i doppioni ci sono eccome.
>"in effetti la possibilità che ci siano doppioni è remota, ma potrebbe capitare"
eccola li !!!

e quindi.....
dati in A14:C22
etichetta da cercare in E13
=INDICE($A$14:$A$22;CONFRONTA(GRANDE(($C$14:$C$22=E$13)*(RIF.RIGA($B
$14:$B$22)+($B$14:$B$22)*10^6);RIF.RIGA(A1));($C$14:$C$22=E
$13)*(RIF.RIGA($B$14:$B$22)+($B$14:$B$22)*10^6);0))
PS: se i valori da cercare avessero ordine di grandezza prossimo a
10^6 allora conviene modificare i due 10^6 contenuti nella formula con
(ad esempio) 10^9.
per praticità condivido il file con le formule:
https://docs.google.com/open?id=0B1kt3cvRBcZwb3dxNGdnUUVPR3M

fai sapere
ciao
andrea

Andrea.9

unread,
Jun 7, 2012, 12:29:16 PM6/7/12
to
> =INDICE($A$14:$A$22;CONFRONTA(GRANDE(($C$14:$C$22=E$13)*(RIF.RIGA($B
> $14:$B$22)+($B$14:$B$22)*10^6);RIF.RIGA(A1));($C$14:$C$22=E
> $13)*(RIF.RIGA($B$14:$B$22)+($B$14:$B$22)*10^6);0))

secondo me roberto ci stupirebbe con effetti speciali ... :-)

paoloard

unread,
Jun 8, 2012, 4:06:13 AM6/8/12
to


"Andrea.9" ha scritto nel messaggio
news:15785889-a880-4e5a...@m3g2000vbl.googlegroups.com...
********************

Innanzitutto toglierei una ridondanza (fatto salvo il range diverso):
=INDICE($A$1:$A$100;CONFRONTA(GRANDE(($C$1:$C$100=D$2)*(RIF.RIGA($B$1:$B$100)*10^6);RIF.RIGA(A1));($C$1:$C$100=D$2)*(RIF.RIGA($B$1:$B$100)*10^6);0))
inoltre, se con questa formula dovessi estrarre tutti i nominativi collegati
alla singola regione, alla fine dell'estrazione ti troveresti delle
ripetizioni o di intestazione, nel caso tu partissi da 1, sia di un nome non
corrispondente se partissi da 2.

Pertanto ribadisco il carattere più generale della mia, adeguatamente
corretta per i doppi, in quanto alla fine dei dati da estrarre restituisce
un errore. Il che mi sembra più corretto. Pensa al caso in cui le
corripondenze fossero solo due. Nel tuo caso avresti il terzo nome
sbagliato. Nel mio caso un errore .
Questa la mia. Puoi verificare?
=INDICE($A$1:$A$100;CONFRONTA(GRANDE(SE($C$1:$C$100=$D$2;RIF.RIGA($B$1:$B$100)*10^9);RIF.RIGA(A1));RIF.RIGA($B$1:$B$100)*10^9;0))
ovviamente matriciale.

Andrea.9

unread,
Jun 8, 2012, 5:50:32 AM6/8/12
to
> Innanzitutto toglierei una ridondanza (fatto salvo il range diverso):
> =INDICE($A$1:$A$100;CONFRONTA(GRANDE(($C$1:$C$100=D$2)*(RIF.RIGA($B$1:$B$10 0)*10^6);RIF.RIGA(A1));($C$1:$C$100=D$2)*(RIF.RIGA($B$1:$B$100)*10^6);0))

ho provato la tua ma non mi sembra funzioni correttamente
secondo me quella ridondanza e' necessaria
queste sono le mie matrici:
{100000014\200000015\300000016\0\0\0\0\0\0}
{0\0\0\200000017\0\200000019\0\50000021\0}
{0\0\0\0\1000000018\0\200000020\0\2000000022}
mentre queste sono le tue:
{14000000\15000000\16000000\0\0\0\0\0\0}
{0\0\0\17000000\0\19000000\0\21000000\0}
{0\0\0\0\18000000\0\20000000\0\22000000}
come vedi nelle mie è il valore che genera l'ordine mentre nelle tue
e' il riferimento alla riga (e cio' non funziona come atteso)

> inoltre, se con questa formula dovessi estrarre tutti i nominativi collegati
> alla singola regione, alla fine dell'estrazione ti troveresti delle
> ripetizioni o di intestazione, nel caso tu partissi da 1, sia di un nome non
> corrispondente se partissi da 2.

non ho capito

ora guardo l'altra :-)
ciao
andrea

Andrea.9

unread,
Jun 8, 2012, 5:55:14 AM6/8/12
to
> queste sono le mie matrici:
> {100000014\200000015\300000016\0\0\0\0\0\0}
> {0\0\0\200000017\0\200000019\0\50000021\0}
> {0\0\0\0\1000000018\0\200000020\0\2000000022}
> mentre queste sono le tue:
> {14000000\15000000\16000000\0\0\0\0\0\0}
> {0\0\0\17000000\0\19000000\0\21000000\0}
> {0\0\0\0\18000000\0\20000000\0\22000000}

PS: i numeri da 14 a 22 (decine ed unita' a destra dei valori) sono
riferiti al mio esempio in cui i dati cono compresi tra la riga 14 e
la riga 22
Andrea

Andrea.9

unread,
Jun 8, 2012, 6:06:48 AM6/8/12
to
> Questa la mia. Puoi verificare?
> =INDICE($A$1:$A$100;CONFRONTA(GRANDE(SE($C$1:$C$100=$D$2;RIF.RIGA($B$1:$B$1 00)*10^9);RIF.RIGA(A1));RIF.RIGA($B$1:$B$100)*10^9;0))
> ovviamente matriciale.

cioa paolo
ho verificato la tua seconda formula e mi da lo stesso problema della
prima cioe' per me le matrici non sono quelle corrette.
la tua corretta dovrebbe essere questa (etichette da ricercare in
E1:G1):
=INDICE($A$2:$A$100;CONFRONTA(GRANDE(SE($C$2:$C$100=E$1;($B$2:$B
$100)*10^9+RIF.RIGA($B$2:$B$100));RIF.RIGA(A1));($B$2:$B
$100)*10^9+RIF.RIGA($B$2:$B$100);0))
dimmi cosa ne pensi.
ciao
andrea

Bruno Campanini

unread,
Jun 8, 2012, 6:21:13 AM6/8/12
to
It happens that kkxx formulated :
{=IF(ISERROR(INDEX($A$1:$A$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0))),"",INDEX($A$1:$A$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0)))}
FormulaArray

Dati in A1:C10
Condizione in C12

Bruno


Bruno Campanini

unread,
Jun 8, 2012, 6:44:11 AM6/8/12
to
Bruno Campanini explained :

> {=IF(ISERROR(INDEX($A$1:$A$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0))),"",INDEX($A$1:$A$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0)))}
> FormulaArray
>
> Dati in A1:C10
> Condizione in C12

Ovvero:
{=IF(ISERROR(INDEX($A$1:$B$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0),1)),"",INDEX($A$1:$B$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0),1)&"
"&INDEX($A$1:$B$10,MATCH(LARGE(IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),ROW(A1)),IF($C$1:$C$10=$C$12,$B$1:$B$10+ROW($A$1:$A$10)),0),2))}
FormulaArray

Restituisce, nella stessa cella, nome e punteggio.

Bruno


kkxx

unread,
Jun 8, 2012, 8:56:37 AM6/8/12
to

"Bruno Campanini" <brun...@libero.it> ha scritto nel messaggio
news:4fd1d794$0$1385$4faf...@reader1.news.tin.it...
> Bruno Campanini explained :
[...]
un po' dura a capire...:) ma ci provo, mille grazie


paoloard

unread,
Jun 8, 2012, 5:22:10 PM6/8/12
to


"Andrea.9" ha scritto nel messaggio
news:057df201-e612-44ea...@n5g2000vbb.googlegroups.com...
************************

Per chiarire:
in prima riga i titoli di colonna
la matrice dei dati nelle colonne A, B, C a partire dalla riga 2
il nome della regione da filtrare in D2
comunque, se vuoi, vedi il file "Estrazione.xlsx" qui:
https://skydrive.live.com/?wa=wsignin1.0&sa=82778661#cid=119877C26B75DCC7&id=119877C26B75DCC7%21154

Andrea.9

unread,
Jun 9, 2012, 2:14:35 PM6/9/12
to
> Per chiarire:
> in prima riga i titoli di colonna
> la matrice dei dati nelle colonne A, B, C a partire dalla riga 2
> il nome della regione da filtrare in D2
> comunque, se vuoi, vedi il file "Estrazione.xlsx" qui:https://skydrive.live.com/?wa=wsignin1.0&sa=82778661#cid=119877C26B75...
>
> -- ciao paoloardhttp://riolab.org

ciao paolo
quindi: la mia da l'elenco giusto (dal + grande al + piccolo) ma se
trascinata eccessivamente da risultati sbagliati;
ma data che la domanda dell'OP era "vorrei sapere i primi 3 per
l'italia, francia e germania" mi sembrerebbe che trascinando la mia
solo tre volte (ed ammettendo almeno tre risultati validi) sarebbe ok
comunque la tua corretta (come da post precedente) risolverebbe tutto:
=INDICE($A$2:$A$100;CONFRONTA(GRANDE(SE($C$2:$C$100=E$1;($B$2:$B
$100)*10^9+RIF.RIGA($B$2:$B$100));RIF.RIGA(A1));($B$2:$B
$100)*10^9+RIF.RIGA($B$2:$B$100);0))
concordi?
ciao
andrea

paoloard

unread,
Jun 9, 2012, 3:02:39 PM6/9/12
to


"Andrea.9" ha scritto nel messaggio
news:9e8332d9-82ce-4649...@d17g2000vbv.googlegroups.com...
**************************
Ciao Andrea,
non sarei del tutto d'accordo perché, come anche tu fai notare, se i dati da
estrarre fossero solo due il terzo verrebbe sbagliato mentre sarebbe piů
corretto che segnalasse un errore, o un dato vuoto nel caso si volesse
gestire l'errore.
Perň concordo con l'idea di gestire i doppioni con il metodo che hai
suggerito. La prima volta che lo vidi applicato fu da parte di MAO (alias
Maurizio Lettieri), vedi il suo articolo su RIO:
http://www.riolab.org/index.php?option=com_content&view=article&id=207:classifica-automatica&catid=47:excel&Itemid=68

Andrea.9

unread,
Jun 9, 2012, 5:48:58 PM6/9/12
to
Ciao Paolo.
Ok per la gestione dei dati non validi. la tua con il SE riisolve il
problema.
Per la gestione dei valori doppi avevo visto qualcosa di simile in
passato ma non ricordo dove.
Mi e' rimasta l'idea e di li ho preso ispirazione :-)
Ciao
Andrea
0 new messages