Excel Forum Per condividere esperienze su Microsoft Excel

Minimo tra più celle

  • Messaggi
  • OFFLINE
    Luca.Bartesaghi
    Post: 1
    Registrato il: 16/01/2017
    Città: MILANO
    Età: 34
    Utente Junior
    2010
    00 16/01/2017 18:53
    Buona sera.
    sono nuovo del furum, saluto e ringrazio tutti anticipatamente.

    Io ho il seguente problema, ho 3 fogli, dove vi sono riportati su ogni foglio, gli stessi prodotti con i rispettivi prezzi (di tre aziende differenti). A me servirebbe che su un quarto foglio per ogni riga mi venga riportato il prezzo più basso dei tre fogli precedenti...

    Per effettuare questa operazione ho utilizzato la formula =MIN().
    Infatti, così facendo per ogni prodotto mi viene trascritto il prezzo più basso.
    E più o meno me la sono cavata, ma adesso a me servirebbe che sulla cella di fianco mi esca da che foglio arriva il prezzo più piccolo (oppure che mi si copi una cella dei 3 fogli dove è scritto il nome dell'azienda)...

    Spero di essere stato chiaro ed aver scritto bene...

    Ringrazio ancora tutti e porgendovi una buona serata attendo pazientemente una cortese risposta..
    Grazie
    Luca
  • ONLINE
    alfrimpa
    Post: 2.593
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Veteran
    Excel 365
    00 16/01/2017 18:58
    Ciao Luca

    Sarebbe utile se allegassi un file di esempio (con struttura uguale all'originale) spiegazioni e risultato desiderato inserito manualmente.

    Alfredo
  • OFFLINE
    Luca.Bartesaghi
    Post: 1
    Registrato il: 16/01/2017
    Città: MILANO
    Età: 34
    Utente Junior
    2010
    00 17/01/2017 08:16
    Ciao...immaginavo che la mia spiegazione non fosse chiarissima [SM=x423026] ... in allegato file con esempio... Grazie mille!! ciao!
    Luca
  • ONLINE
    alfrimpa
    Post: 2.599
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Veteran
    Excel 365
    00 17/01/2017 10:13
    Ho visto il file ora ci penso un attimo e ci risentiamo.

    Alfredo
  • OFFLINE
    Luca.Bartesaghi
    Post: 2
    Registrato il: 16/01/2017
    Città: MILANO
    Età: 34
    Utente Junior
    2010
    00 17/01/2017 10:53
    Grazie mille...

    Luca
  • ONLINE
    alfrimpa
    Post: 2.601
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Veteran
    Excel 365
    00 17/01/2017 14:07
    Ciao Luca

    Devo doverosamente premettere che le soluzioni che ti propongo non sono farina del mio sacco ma il merito è da attribuire ad amici di altro forum.

    Io le ho solo adattate al tuo caso.

    1^ Soluzione con formule

    Sul foglio "Finale" in C1:C3 metti i nomi dei tre fogli.

    Nelle celle I8:I10 metti le seguenti formule matriciali (da confermare con CTRL+SHIFT+INVIO)

    vb
    =INDICE($C1:$C3;CONFRONTA(MIN(NUM(INDIRETTO("'"&C1:C3&"'!e5")));NUM(INDIRETTO("'"&C1:C3&"'!e5"));0))


    vb
    =INDICE($C1:$C3;CONFRONTA(MIN(NUM(INDIRETTO("'"&C1:C3&"'!e6")));NUM(INDIRETTO("'"&C1:C3&"'!e6"));0))


    vb
    =INDICE($C1:$C3;CONFRONTA(MIN(NUM(INDIRETTO("'"&C1:C3&"'!e7")));NUM(INDIRETTO("'"&C1:C3&"'!e7"));0))


    2^ Soluzione con VBA

    Inserisci questa function in un modulo standard

    vb
    Function NomeFoglioDaMinimi(ParamArray celle() As Variant) As Variant
        Dim ciclo
        
        NomeFoglioDaMinimi = celle(0).Parent.Name
        
        For ciclo = 0 To UBound(celle) - 1
            If celle(ciclo) > celle(ciclo + 1) Then
                NomeFoglioDaMinimi = celle(ciclo + 1).Parent.Name
            End If
        Next
    End Function


    e sul foglio di lavoro in I8:I10 scrivi

    vb
    =NomeFoglioDaMinimi(Ditta1!E5;Ditta2!E5;Ditta3!E5)


    vb
    =NomeFoglioDaMinimi(Ditta1!E6;Ditta2!E6;Ditta3!E6)


    vb
    =NomeFoglioDaMinimi(Ditta1!E7;Ditta2!E7;Ditta3!E8)


    Ti allego il file

    Alfredo
  • ONLINE
    alfrimpa
    Post: 2.603
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Veteran
    Excel 365
    00 17/01/2017 14:18
    Altra soluzione (sempre non mia) potrebbe essere questa avendo sempre i nomi dei fogli in C1:C3

    vb
    =CERCA(1;0/FREQUENZA(-99^99;Ditta1:Ditta3!E5);$C$1:$C$3)


    Mi sembra la più semplice da adottare.

    Ovviamente i nomi dei fogli puoi metterli dove vuoi cambiando ovviamente i riferimenti nella formula.

    Alfredo
  • OFFLINE
    DANILOFIORINI
    Post: 32
    Registrato il: 15/01/2016
    Città: ROMA
    Età: 51
    Utente Junior
    2016
    00 17/01/2017 16:39
    Ciao
    in base al tuo file di esempio costruisci una tabellina
    da L1 a N1 del foglio"finali" metti i nomi dei fogli da O2 a O4 metti i nomi dei fogli
    in L2 da trascinare fino a N2 e poi in basso fino a riga 4
    =SE(VAL.NON.DISP(CERCA.VERT($E8;INDIRETTO(L$1&"!$E$5:$E$7");1;0));"";CERCA.VERT($E8;INDIRETTO(L$1&"!$E$5:$E$7");1;0))
    in I8 datrascinare fino a I 10
    =INDICE($L$2:$O$4;CONFRONTA(E8;$L2:$O2;0);4) da trascinare fino a I10
    le colonne L-M-N-O le nascondi
    [Modificato da DANILOFIORINI 17/01/2017 16:42]