Risultati da 1 a 27 di 27

Discussione: Cerca valore in una matrice dinamica



  1. #1
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1

    Cerca valore in una matrice dinamica

    Buonasera a tutti, spero di essere chiaro e spiegarvi un problema che mi affligge da giorni.
    Ho una tabella in cui si incrociano l'età in mesi di un cucciolo (di cane per esempio) e i pesi alle varie età fino al peso da adulto (dal file si capisce meglio che intendo...:167:).
    Ora, nelle celle B5 e B6 inserisco l'età in mesi e il peso attuale del cucciolo rispettivamente. Nella colonna a destra (colonna V) sono messi tutti i pesi da adulto per ogni riga.
    Quello che vorrei è inserire una formula in B7 per ricercare il peso del cucciolo (casella B6) nella corrispondente colonna del mese del cucciolo (B5) e mi vada a prendere il peso da adulto (colonna V). Ho provato con cerca.vert, con indice e confronta e in tanti modi ma il problema principale è che la colonna in cui cercare il peso è variabile, non fissa! Cioè dipende dall'età in mesi del cucciolo...
    Per esempio:
    cucciolo di 5 mesi che pesa 13,4 Kg: per approssimazione dovrebbe andarmi a prendere la casella G24 (13,5) e inserirmi nella B7 il valore del peso da adulto corrispondente (casella V24 cioè 21,1 Kg)
    cucciolo di 8 mesi che pesa 29,7 Kg: idem come sopra...casella J48 per approssimazione e peso da adulto 36,4 Kg in V48...

    Come dicevo, essendo variabile la colonna in cui cercare il valore, non riesco ad utilizzare né cerca.vert né le altre formule. L'unica cosa che aveva pensato era di conferire il valore della colonna ad ogni mese (colonna E per mesi 3, colonna F per mesi 4, ecc.) e poi concatenare ma diventa laborioso...

    So che per voi sarà super-banale e che le potenzialità di indice e confronta son ben maggiori di quello che so fare...per questo chiedo aiuto!! :167:

    Spero di essermi riuscito a spiegare e vi ringrazio in anticipo per l'aiuto.
    File Allegati File Allegati
    Ultima modifica fatta da:Gerardo Zuccalà; 02/01/16 alle 23:49

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7165
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1304
    Ciao,
    la formula elementare lunga da mettere in B7 sarebbe così

    =INDICE($V$5:$V$82;CONFRONTA(B5;SE(B6=E4;$E$5:$E$82;SE(B6=F4;$F$5:$F$82;SE(B6=G4;$G$5:$G$82;SE(B6=H4;$H$5:$H$82;SE(B6=I4;$I$5:$I$82;SE(B6=J4;$J$5:$J$82;SE(B6=K4;$K$5:$K$82;SE(B6=L4;$L$5:$L$82;SE(B6=M4;$M$5:$M$82;SE(B6=N4;$N$5:$N$82;SE(B6=O4;$O$5:$O$82;SE(B6=P4;$P$5:$P$82;SE(B6=Q4;$Q$5:$Q$82;SE(B6=R4;$R$5:$R$82;SE(B6=S4;$S$5:$S$82;SE(B6=T4;$T$5:$T$82;SE(B6=U4;$U$5:$U$82)))))))))))))))))))

    Ora vediamo di accorciarla.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  3. I seguenti utenti hanno dato un "Like"


  4. #3
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao Bolz1 e un saluto anche a ges che mi ha anticipato

    in B7 prova questa formula
    =INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0));1))


    [EDIT]
    @Bolz nr1
    Questa formula che ti ho fatto è precisa solo che i dati che tu mi hai scritto nella tabella incrociata attraverso una formula sono con numeri millesimali anche se apparentemente sembrano decimali, infatti se provi ad aumentare e diminuire i decimali te ne accrgerai, questo significa che visto che il CONFRONTA() cerca in maniera approssimativa, normalmente dovrebbe darmi il numero prima a quello superiore ma in realtà no.
    Comuque si potrebbe aggiustare la tua formala interna con la funzione ARROTONDA

    Oltretutto noterai che ti ho anche messo la formattazione condizionale questo potrebbe esseri di aiuto a visulaizzare meglio
    Vedi allegato



    Ciao

    File Allegati File Allegati
    Ultima modifica fatta da:Gerardo Zuccalà; 03/01/16 alle 00:29

  5. I seguenti 4 utenti hanno dato un "Like" a Gerardo Zuccalà per questo post:


  6. #4

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7165
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1304
    Ecco Gerardo (che saluto) che mi ha anticipato accorciando la formula! :28:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #5
    L'avatar di Pitagora
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Milano
    Età
    54
    Messaggi
    782
    Versione Office
    WIN , 2013 2016
    Likes ricevuti
    319
    Likes dati
    1
    Buona Sera

    Ciao Ges prova a controllare


    Apparentemente sembra che nella tabella il peso da adulto puo' essere ricavato facendo il max della riga corrispondente ai mesi.

    Saluti
    Window 8.1 Excel 2013/2016

  8. #6

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7165
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1304
    Citazione Originariamente Scritto da Pitagora Visualizza Messaggio
    Buona Sera

    Ciao Ges prova a controllare


    Apparentemente sembra che nella tabella il peso da adulto puo' essere ricavato facendo il max della riga corrispondente ai mesi.

    Saluti
    Ciao Pitagora,
    diciamo che è così come dici con qualche piccola approssimazione.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  9. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Un saluto a tutta la compagnia.

    @Gerardo
    Ottimo lavoro. Complimenti.

    @ges e @pitagora
    Sarei d'accordo se il peso del cucciolo è esattamente quello previsto nella tabella. Caso contrario la formula di Gerardo assume il valore immediatamente minore, senza tener in alcun conto una possibile interpolazione.
    Faccio un esempio: cucciolo di 5 mesi, peso attuale 5,6 Kg, da adulto 7,9 Kg. Continuando nell'esempio, se il cucciolo pesasse 5,5 Kg la risposta da adulto sarebbe 6,8 Kg. Giustamente Ges aggiunge "con qualche approssimazione".
    Io non ho un buon feeling con le formule :172::172::172: ma non si potrebbe trovare "qualcosa" che tenga conto della "distanza" tra il peso dichiarato e il peso della tabella per avere un dato più verosimile. Riprendendo l'esempio sopra enunciato, non mi pare corretto che se il cucciolo "manca" di 100 gr, da adulto perderà 1100 gr. :187::187::187:

    Gerardo, se sei d'accordo sul ragionamento, datti da fare :167::167::167:
    Ciao a tutti,
    Mario

  10. #8
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1687
    Versione Office
    2010 PC
    Likes ricevuti
    898
    Likes dati
    185
    ciao
    volendo risparmiare ancora:
    =INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2)))
    "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")

  11. #9
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao Mariuss44 grazie per il tuo riscontro positivo, Mario se hai notato nel post nr 3 ho fatto una modifica e qui non è un problema di formule ma i numeri che si visualizzano sono millesimali, per la tua domanda come prima cosa dovremmo avere i numeri completi
    @ ninai non ho capito la tua formula ma appena avrò Excel mi precipiterò a studiarmela
    E in attesa della risposta di Bolz1 un saluto a tutti

    Inviato da WindowsPhone XL950

  12. #10
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1687
    Versione Office
    2010 PC
    Likes ricevuti
    898
    Likes dati
    185
    ciao
    accolgo la proposta di Marius, con una "composizione" che dovrebbe calcolare attraverso un'iterpolazione lineare:
    =(B5-INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0)));CONFRONTA(B6;E4:U4;0)))/(C10-INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0)));CONFRONTA(B6;E4:U4;0)))*(INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))+1)-INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))))+INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2)))

    ci saranno "vie più brevi ma così è venuta.



    Gerardo
    prima, ho usato la tua formula, evitando un confronta, in quanto il numero di colonna è dato dai mesi meno 2, ed ho tolto il numero 1 nell'ultimo argomento di INDICE(), in quanto superfluo.
    "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")

  13. I seguenti 3 utenti hanno dato un "Like" a ninai per questo post:


  14. #11

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7165
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1304
    Ciao ninai,
    questi cuccioli li vuoi tenere proprio in riga (e colonna)! :167:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  15. #12
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Con la considerazione di Mario (ciao) il quale fa rilevare che le formule proposte non osservano l'approssimazione più corretta del peso da adulto, siamo in presenza di uno di quei casi in cui, con una UDF (forse...), le cose si risolvono con maggiore precisione.

    Veniamo all'esempio proposto inizialmente da Bolz1: un cucciolo di 5 mesi che pesa 13,4kg deve fornire un risultato del peso da adulto di 21,1 kg che è l'approssimazione più vicina.
    Ebbene. Nessuna delle formule proposte restituisce questo valore. Siamo tutti nel risultato 20,6 kg. (ho testato la formula di Gerardo e di ninai). Anche la mia restituisce lo stesso valore.

    Per completezza la espongo qui di seguito.
    =CERCA.VERT($B$5;SCARTO(Foglio1!$B$4;;Foglio1!$B$6;RIGHE(Foglio1!$E$4:$E$82);21-Foglio1!$B$6);21-$B$6;VERO)
    A questo punto (...probabilmente) sarebbe il caso di utilizzare una UDF.
    L'ho scritta senza verificarla giusto per lanciare un'idea. Sono certo che può farsi di meglio.
    in B7 =Cerca_Peso(B6;B5)
    Codice: 
    Public Function Cerca_Peso(Mesi As Byte, Peso_Attuale As Double) As Double
        Dim My_Month As Range
        Dim peso_Inf As Range
        Dim peso_Sup As Range
        Dim i As Long
        Set My_Month = Range("E4:U4").Find(Mesi)
        If Not My_Month Is Nothing Then
            Do
                Set peso_Inf = My_Month.Offset(i + 1)
                Set peso_Sup = My_Month.Offset(i + 2)
                If peso_Inf <= Peso_Attuale And peso_Sup >= Peso_Attuale Then
                    Cerca_Peso = _
                    Range("V4").Offset(Switch((Peso_Attuale - peso_Inf) < (peso_Sup - Peso_Attuale), peso_Inf.Row - 4, _
                    (peso_Sup - Peso_Attuale) < (Peso_Attuale - peso_Inf), peso_Sup.Row - 4))
                    Exit Do
                End If
                i = i + 1
            Loop Until i = 78
        Else
            Cerca_Peso = 0
        End If
    End Function

  16. I seguenti 3 utenti hanno dato un "Like" a Textomb per questo post:


  17. #13

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1229
    Likes dati
    923
    Ciao a tutti,
    in effetti l'UDF di Textomb restituisce il valore corretto :246:

    Però, con le formule, rifacendomi al "Quiz di fine anno" di ges, nella cella B7 si potrebbe anche usare la formula matriciale:

    =INDICE(V1:V82;MIN(SE(ASS(INDIRETTO(INDIRIZZO(5;B6+2)&":"&INDIRIZZO(82;B6+2))-B5)=MIN(ASS(ASS(INDIRETTO(INDIRIZZO(5;B6+2)&":"&INDIRIZZO(82;B6+2))-B5)));RIF.RIGA(A5:A82);"")))

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  18. I seguenti 3 utenti hanno dato un "Like" a cromagno per questo post:


  19. #14
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    in un'altra forma ma che riassume la stessa logica...
    =INDICE(V1:V82;CERCA(MIN(ASS(INDIRETTO(INDIRIZZO(5;B6+2)&":"&INDIRIZZO(82;B6+2))-B5));INDIRETTO(INDIRIZZO(5;B6+2)&":"&INDIRIZZO(82;B6+2))-B5;RIF.RIGA(A5:A82)))
    sempre matriciale su B7.

  20. #15
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    @cromagno @textomb
    Ragazzi mi avete scompaginato!
    La UDF di Alberto l'ho capita ma le successive vostre formule (invero molto simili per non dire uguali) le vorrei spiegate. Volete provarci (l'uno o l'altro, per carità, e senza ressa :188::188::188: ).

    Ciao,
    Mario

  21. #16
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    In realtà non sono uguali. Prova a guardarle meglio.
    Ti spiego la mia.
    sfrutto la logica della funzione CERCA(valore; vettore; [risultato])
    Il valore è rappresentato dal minimo in valore assoluto delle differenze tra il vettore di competenza ed il peso attuale.
    Il vettore è proprio dato dalle differenze tra i valori di riferimento dei pesi ed il peso attuale
    Il [risultato] invece è il vettore riga.
    Pertanto questa funzione estrapola il valore riga più vicino alla minima distanza tra il peso attuale ed il peso trovato in tabella.
    Riconosco che la spiegazione è lacunosa ma resto fiducioso...

  22. #17

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1229
    Likes dati
    923
    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    @cromagno @textomb
    Ragazzi mi avete scompaginato!
    La UDF di Alberto l'ho capita ma le successive vostre formule (invero molto simili per non dire uguali) le vorrei spiegate. Volete provarci (l'uno o l'altro, per carità, e senza ressa :188::188::188: ).

    Ciao,
    Mario
    Ciao Mario,
    parto dalla parte centrale perchè è quella che a prima vista sembra complicata....

    =INDICE(V1:V82;MIN(SE(ASS(INDIRETTO(INDIRIZZO(5;B6+2)&":"&INDIRIZZO(82;B6+2))-B5)=MIN(ASS(ASS(INDIRETTO(INDIRIZZO(5;B6+2)&":"&INDIRIZZO(82;B6+2))-B5)));RIF.RIGA(A5:A82);"")))

    In pratica gli INDIRETTO e INDIRIZZO mi servono per trovare la giusta colonna (in base ai mesi del cucciolo)...sfruttando la logica di "ninai", dove le colonne riguardanti i mesi altro non sarebbero che i mesi indicati nella cella B6 + 2.
    Detto questo, otterrei (ad esempio per la colonna dei 5 mesi):

    MIN(SE(ASS((G5:G82)-B5)=MIN(ASS(G5:G82)-B5)));RIF.RIGA(A5:A82);"")))

    [Avevo messo un ASS in più....
    :188:]

    Che sarebbe a dire:
    Se trovi la corrispondenza con la minima differenza tra i valori nella colonna G e il valore nella cella B5 mi dai il suo numero di riga altrimenti nulla.

    Messo dentro la funzione INDICE:

    =INDICE(V1:V82;.............

    Mi restituirà il giusto valore corrispondente nella colonna V.

    Spero di esser stato un pò più chiaro...
    :168:

    [EDIT]
    Rileggendo quanto ho scritto mi rendo conto di essere pessimo nelle spiegazioni...
    :171::171:

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  23. #18
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    :48::252::235:

    Siete fantastici...per quanto riguarda le cifre, credo siano millesimi solo in alcune celle perché per comodità avevo fatto un copia di altri pesi poiché il rapporto di aumento peso era lo stesso...nella maggior parte li ho inseriti io a mano e sono decimali...ma controllo bene.

    Per le formule, ora le provo, cerco di capirle e vi dico...intanto veramente mitici!!! Tutti!!! :97::97:

  24. #19
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1687
    Versione Office
    2010 PC
    Likes ricevuti
    898
    Likes dati
    185
    ciao
    ragazzi siete tremendi!!! non si può aggiungere una formula che combinate un macello :258::258::258:

    ricordo però, che la mia ultima formula faceva riferimento al concetto di "interpolazione", perciò quando il primo valore, in base all'età del cucciolo, si poneva fra due valori , si restituiva un valore intermedio proporzionato fra i due rispettivi pesi da adulto, detto in formule ho applicato la formula di interpolazione lineare:

    B5: peso attuale es. 2,5
    B6:età in mesi es. 8
    C9: valore in J5 2 con la formula:
    =INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0)));CONFRONTA(B6;E4:U4;0))
    C10 valore in J6 3 con la formula:
    =INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0)))+1;CONFRONTA(B6;E4:U4;0))

    B9: valore in V5 2,2 con la formula:
    =INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2)))

    B10 valore in V6 3,3 con la formula:
    =INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))+1)

    a questo punto, applicando la formula di interpolaione lineare:
    =(B5-C9)/(C10-C9)*(B10-B9)+B9

    e sostituendo ad ogni cella la rispettiva formula:
    =(B5-INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0)));CONFRONTA(B6;E4:U4;0)))/(C10-INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;CONFRONTA(B6;E4:U4;0)));CONFRONTA(B6;E4:U4;0)))*(INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))+1)-INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))))+INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2)))

    EDIT
    LA FORMULA NON E' CORRETTA IN QUANTO SI DEVE SOSTITUIRE IL C10 CON LA RELATIVA FORMULA E SEMPLIFICARE I CONFRONTA(), LA FORMULA GIUSTA DOVREBBE ESSERE QUELLA RIPORTATA NEL POST #22


    il risultato sarà 2,75

    infatti il peso attuale è 2,5 (a metà fra 2 e 3) ed il risultato sarà a metà fra 2,2 e 3,3

    così io avevo inteso la proposta di Marius
    Ultima modifica fatta da:ninai; 03/01/16 alle 20:55
    "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")

  25. I seguenti utenti hanno dato un "Like"

    ges

  26. #20
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Eccoci, ho provato tutte le formule e le ho inserite nel file allegato. Ho provato anche a capirle ma INDICE e CONFRONTA stranamente non le ho mai usate, quindi ci devo entrare un po' nel modus pensandi...

    Nel file ho sostituito la colonna dei pesi da adulto con numeri decimali, volevo farlo anche nella tabella, ma mi sono reso conto che in realtà quelli millesimi sono tantissimi...:251:

    Formula Gerardo: figo la formattazione condizionale!!:264::246: Come dicevi tu stesso, purtroppo il risultato va a prendere quello inferiore più vicino e se metti, per esempio, 12,8 Kg a 6 mesi ti va a prendere quello sotto (11,9 Kg) con peso da adulto 15,6 invece che 17,3 (come dicevate tu e Marius)

    Idem per le formule non matriciale di ninai e textomb. La seconda di ninai in realtà da valori ancora più bassi...

    Per quanto riguarda invece le matriciali, direi che vanno benissimo, prendono il valore più vicino (superiore o inferiore) al peso del cucciolo!

    Grazie davvero, da solo non ci sarei arrivato nemmeno tra un millennio...
    Grazie anche a Textomb per la UDF...me la studierò con calma!

    Domanda: per dare un riferimento di colonna "fisso", avete usato il B6+2...ora, in realtà questa tabella fa parte di un foglio ben più grande (non sto a spiegarvelo sennò scrivo un libro!! ): immagino che quel "+2" dovrà essere trasformato...per dirvi, il peso del cucciolo nel file originale è nella casella K6 e la prima colonna della tabella è la AR...:258: quindi a logica sarà il valore in K6 + 41...

    ASS non l'avevo mai sentita...:28:

    Rimetto il file con le formule di tutti, grazie ancora.
    File Allegati File Allegati

  27. #21
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Citazione Originariamente Scritto da ninai Visualizza Messaggio
    ciao...
    WOW!! Appena riesco provo anche questa...:28: Thanks again!!
    Ultima modifica fatta da:Canapone; 16/05/17 alle 16:53

  28. #22
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1687
    Versione Office
    2010 PC
    Likes ricevuti
    898
    Likes dati
    185
    correggo la mia formula che bolz1 ha inserito in B10 del suo ultimo file, in quanto non avevo correttamente sostituito le formule ai riferimenti di cella:

    =(B5-INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;B6-2));B6-2))/(INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))+1;B6-2)-INDICE(E5:U82;CONFRONTA(B5;INDICE(E5:U82;;B6-2));B6-2))*(INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))+1)-INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2))))+INDICE(V5:V82;CONFRONTA(B5;INDICE(E5:U82;;B6-2)))
    "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")

  29. I seguenti utenti hanno dato un "Like"


  30. #23
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Dopo aver studiato (grazie alle spiegazioni :235: di Cromagno e Textomb) le formule proposte :97: , ho scaricato il file che Bolz1 ha postato con tutte le soluzioni, ho inserito quella di ninai (corretta) :23: e, udite udite, non mi sono potuto esimere dall'aggiungere la mia, in versione VBA!!! :188::188::188:

    Ciao a tutti,
    Mario

    PS. Basta cambiare uno dei due dati (peso o età).

  31. #24
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Oppss ... Dimenticavo l'allegato e il codice.
    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5:B6")) Is Nothing Then
    Dim pa As Double, ea As Integer
        pa = Cells(5, 2).Value: ea = Cells(6, 2).Value
        If pa = 0 Or ea = 0 Then Exit Sub
        cln = Application.WorksheetFunction.Match(ea, Range("E4:U4")) + 4
        LetCol = Chr(((cln - 1) Mod 26) + 65)
        intcln = LetCol & "5:" & LetCol & "82"
        rga = Application.WorksheetFunction.Match(pa, Range(intcln)) + 4
        pf = Cells(rga, 22).Value
        pa2 = Cells(rga + 1, cln).Value
        If pa < pa2 Then
            pf1 = Cells(rga + 1, 22).Value
            peso = pa * pf1 / pa2
        Else
            peso = pf
        End If
        Cells(17, 2) = peso
    End If
    End Sub
    (se lo vede scossa mi picchia!! a parte tutto non ho dimensionato le variabili! Mah...)

    Ciao,
    Mario
    File Allegati File Allegati

  32. I seguenti 2 utenti hanno dato un "Like" a Marius44 per questo post:


  33. #25
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Santa pupazzola!! Siete delle belve!!! :230::230::230:

    Ninai, la tua formula corretta è splendida e funziona benissimo!
    Marius, spettacolo la macro!! Più o meno l'ho capita, mi spieghi solo la riga 7?

    Grazie, siete fantastici! :97::97:

  34. #26
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    ciao Mario.
    La tua UDF è molto diretta. Sebbene non hai dimensionato le variabili... (se lo vede scossa...):
    Inoltre volevo farti notare che una volta trovata la colonna cln puoi semplificare:
    Set intCln = Range(Cells(5, cln), Cells(82, cln))
    rga = Application.WorksheetFunction.Match(pa, intCln)
    Praticamente in questo modo elimini le due righe
    ' LetCol = Chr(((cln -1) Mod 26) + 65)
    ' intCln = LetCol & "5:" & LetCol & "82"
    Il resto secondo me funziona bene. :28:
    Dovresti però trovare il modo di eliminare i valori fuori range.
    Per esempio se scrivi
    Peso Attuale 7 kg
    Età: 14 mesi
    il codice va in errore.

  35. #27
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Buon giorno a tutti
    @Textomb
    Hai ragione su tutta la linea. La fretta, dopo aver studiato le formule (la tua e quella di cromagno) mi girava un po' la testa) ho buttato giù il codice senza pensare che sarebbe "andato in giro". E' vero: manca il dimensionamento delle variabili e non ho pensato a porre dei limiti ai valori. Penso sia facilmente rimediabile da chiunque. Grazie per le osservazioni (sempre attento, Alberto!).

    @Bolz1
    Penso ti abbia già risposto Textomb con il suo suggerimento: le righe
    Codice: 
    LetCol = Chr(((cln - 1) Mod 26) + 65)
    intcln = LetCol & "5:" & LetCol & "82"
    servono per trasformare il numero della colonna in lettera e costruire l'intervallo dove cercare il peso. Per evitare che scossa mi tiri le orecchie aggiungo che manca anche la codificazione dell'eventuale colonna con due lettere (se siamo nella colonna 27, cioè AA, va in errore.

    Ciao,
    Mario

Discussioni Simili

  1. Interpolazione e scelta di un valore da una matrice
    Di saturn87 nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 06/09/16, 17:21
  2. Rendere una MATRICE dinamica
    Di Japogi nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 14/08/16, 21:53
  3. Cerca valori in colonna e restituisci matrice
    Di REMIGIO nel forum Domande su Excel VBA e MACRO
    Risposte: 7
    Ultimo Messaggio: 11/03/16, 16:35
  4. [Risolto] Excel 2007, Formule, cerca matrice nella col. I ed importa dato della col. J
    Di Pier Paolo nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 15/01/16, 14:59
  5. impostare come condizione l'uguaglianza di un valore a una matrice
    Di Serena nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 13/01/16, 17:36

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •