Excel Forum Per condividere esperienze su Microsoft Excel

Trovare in una lista i 3 numeri minori in base ad un criterio

  • Messaggi
  • OFFLINE
    GIOVANNI.MASTELLONE
    Post: 8
    Registrato il: 30/10/2013
    Utente Junior
    Office 10
    00 29/12/2022 18:55
    Ciao a tutti
    Come posso trovare in una lista di oggetti i tre valori minimi ( ultimo , penultimo, terzultimo ), secondo un criterio.
    Esempio:
    colonna A , ci sono vari nomi di oggetti.
    colonna B , ci sono i valori

    colonna C1 inserisco il nome dell'oggetto, di cui voglio i risultati, nelle celle d1; e1; f1;.

    Ho provato con min.se ma ne trovo uno , forse ci vuole una formula Min nidificata?

    Grazie mille
    G.M.
  • OFFLINE
    L2018
    Post: 420
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 29/12/2022 20:03
    sii così gentile da pubblicare il file

    leo

    LEO
    https://t.me/LordBrum
  • OFFLINE
    federico460
    Post: 2.767
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 29/12/2022 20:50
    ciao
    magari prova con PICCOLO(SE........................rif.colonna(A$1) e la trascini a destra

    min() rende sempre e solo un dato il minimo
    [Modificato da federico460 29/12/2022 20:51]
  • OFFLINE
    GIOVANNI.MASTELLONE
    Post: 8
    Registrato il: 30/10/2013
    Utente Junior
    Office 10
    00 29/12/2022 21:59
    allego file di esempio

    grazie
  • OFFLINE
    federico460
    Post: 2.770
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 29/12/2022 22:12
    ciao
    in h4 e lo tiri in basso
    da confermare matriciale CTRL MAIUSCOLO INVIO
    =SE.ERRORE(PICCOLO(SE($A$2:$A$31=$G$2;$C$2:$C$31);RIF.RIGA(A1));"")

    in G4

    =SE.ERRORE(INDICE($B$2:$B$1000;CONFRONTA(1;INDICE(($A$2:$A$1000=$G$2)*($C$2:$C$1000=$H4);;);0));"")
  • OFFLINE
    GIOVANNI.MASTELLONE
    Post: 9
    Registrato il: 30/10/2013
    Utente Junior
    Office 10
    00 29/12/2022 22:25
    Ciao federico
    grazie mille
    Ho provato ad inserire le formule nelle rispettive celle
    ma non funziona

    riallego file con le formule inserite

  • OFFLINE
    L2018
    Post: 421
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    10 29/12/2022 23:25
    Federico ti aveva detto esplicitamente che le formule in H dovevano essere di tipo matriciale, cosa che si ottiene con Ctrl-Shift-Del premuti mentre il cursore si trova nel rigo della formula
    Poichè in questo momento sono libero, se la cosa non dispiace a Federico e facilita te, mi permetto di rimandarti io il file corretto.
    Osserva le formule in colonna H : ci sono le parentesi graffe, effetto della manovra che dovevi fare

    Leo

    LEO
    https://t.me/LordBrum
  • OFFLINE
    federico460
    Post: 2.771
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 29/12/2022 23:29
    ciao
    L2018
    facciamo un pochino di didattica

    questa è matriciale
    =SE.ERRORE(PICCOLO(SE($A$2:$A$31=$G$2;$C$2:$C$31);RIF.RIGA(A1));"")

    questa no
    =SE.ERRORE(INDICE($B$2:$B$1000;CONFRONTA(1;INDICE(($A$2:$A$1000=$G$2)*($C$2:$C$1000=$H4);;);0));"")

    mi sai dire cos'è che rende la seconda formula non matriciale?
    NB
    confronta(1;(a:a=X)*(b:b=Y);0) è matriciale
    [Modificato da federico460 29/12/2022 23:31]
  • OFFLINE
    L2018
    Post: 422
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 29/12/2022 23:39
    no, non lo so
    una volta ho letto invece il significato, il motivo del rendere matriciale una formula ma sinceramente non ricordo la spiegazione
    -------------
    forse matriciale indica che il range viene reso in qualche modo come tabella ?
    Leo
    [Modificato da L2018 29/12/2022 23:51]

    LEO
    https://t.me/LordBrum
  • OFFLINE
    federico460
    Post: 2.772
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 29/12/2022 23:53
    te la spiego io a mie parole

    la formula sarebbe

    =SE.ERRORE(INDICE($B$2:$B$1000;CONFRONTA(1;($A$2:$A$1000=$G$2)*($C$2:$C$1000=$H4);0));"")
    ma questa crea una matrice esempio
    0000010000000000100
    e dovrebbe essere confermata matriciale
    Con INDICE() eliminiamo il matriciale creando una sequenza che excel legge come fisica

    =SE.ERRORE(INDICE($B$2:$B$1000;CONFRONTA(1;INDICE(($A$2:$A$1000=$G$2)*($C$2:$C$1000=$H4);;);0));"")
    [Modificato da federico460 29/12/2022 23:53]
  • OFFLINE
    L2018
    Post: 423
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 30/12/2022 00:01
    be', forse mi sono avvicinato in qualche modo col ricordo che avevo di ciò che ho letto
    molto interessante la spiegazione, credo di aver capito qualcosa
    molto interessante anche la "filosofia" stessa che sta dietro a questi meccanismi
    purtroppo non ho la calma e il tempo di correre fino a questi livelli, ma mi piacerebbe
    grazie

    Leo

    LEO
    https://t.me/LordBrum
  • OFFLINE
    GIOVANNI.MASTELLONE
    Post: 10
    Registrato il: 30/10/2013
    Utente Junior
    Office 10
    00 30/12/2022 11:22
    Grazie ragazzi
    l2018 e federico
    Il risultato è quello che cercavo, e grazie a voi ho imparato un'altra cosa, buone feste

    G.M.
  • OFFLINE
    GIOVANNI.MASTELLONE
    Post: 11
    Registrato il: 30/10/2013
    Utente Junior
    Office 10
    00 30/12/2022 20:35

    Ciao ragazzi
    Una domanda:
    Rif.Riga(A1), nella formula sotto elencata, a cosa corrisponde, che funzione a
    Mi serve sapere nel caso voglio modificare i riferimenti di celle ecc...

    SE.ERRORE(PICCOLO(SE($A$2:$A$31=$G$2;$C$2:$C$31);RIF.RIGA(A1));"")

    Grazie mille e buona serata
  • OFFLINE
    federico460
    Post: 2.773
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 30/12/2022 20:42
    ciao
    la funzione piccolo ha una variabile che nella formula vedi come
    K

    non è altro che il numero di valore più piccolo che vuoi estrarre

    1= il più piccolo
    5 il quinto più piccolo
    3 il terzo più piccolo


    ora noi abbiamo bisogno che ci trovi il numero delle righe partendo dal più piccolo

    RIF.RIGA(A1) equivale a 1
    trascinando la formula in basso ecco che diventa
    RIF.RIGA(A2) che equivale a 2
    RIF.RIGA(A3) che equivale a 3

    ecc...

    ecco che crei la lista dal più piccolo al più grande
    [Modificato da federico460 30/12/2022 20:43]
  • OFFLINE
    GIOVANNI.MASTELLONE
    Post: 12
    Registrato il: 30/10/2013
    Utente Junior
    Office 10
    00 31/12/2022 11:49
    Grazie mille per la tua spiegazione

    Auguri di un buon anno
  • 15MediaObject5,00115 1