Risultati da 1 a 29 di 29

Discussione: Formula matriciale molto difficile



  1. #1
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0

    Formula matriciale molto difficile

    Riprendo una discussione aperta qualche mese fa...
    Mi è stato consigliato di riaprire direttamente la discussione...

    In parte il quesito è risolto, ma è nata qualche nuova esigenza che ho specificato nel testo del file allegato.

    Riconosco che la domanda è molto difficile, ma confido in voi.

    Utilizzo excel 2007.


    File Allegati File Allegati

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Ciao,
    non so se ho capito bene la domanda, ma nella colonna E per ottenere i valori ad intervalli richiesti che tiene conto delle condizioni X1 ed anche X2 forse potresti la stessa matriciale con questo adattamento:

    =SE(E(C3=46;D3="X1");SOMMA(B3:INDICE(B3:B$67;MIN(SE.ERRORE(CONFRONTA(1;INDICE(1/(C3:C$67=0););0)-1;10000);SE.ERRORE(CONFRONTA("XSX";C4:C$67;0);10000);SE.ERRORE(CONFRONTA(C3;C4:C$67;0);10000))));SE(E(C3=46;D3="X2");SOMMA(B3:INDICE(B3:B$67;MIN(SE.ERRORE(CONFRONTA(1;INDICE(1/(C3:C$67=0););0)-1;10000);SE.ERRORE(CONFRONTA("XSX";C4:C$67;0);10000);SE.ERRORE(CONFRONTA(C3;C4:C$67;0);10000))));""))
    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 ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Leggo meglio le tue indicazioni e non volevi la somma B20:B37 quindi la formula che ho messo prima non va bene.

    Però non mi è chiaro quando dici "Formula che fa la somma con range che inizia quando in colonna C è presente il 46 ed in colonna D è presente X1 - il range termina quando vi è il primo spazio libero o vi è la parola "XSX" o reincontra il 46 o numero maggiore di 46"

    Poi dici di volere =somma(B10:B16) (Il range termina con B19 perché in C20 vi è di nuovo 46) " ma già a B11 c'è 47 che è superiore a 46 quindi si dovrebbe interrompere?
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  5. #4

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao a tutti,

    @Sasyjoe
    Mi son riletto la vecchia discussione:
    http://www.forumexcel.it/forum/6-dom...rice-excel2007

    Adesso ricordo e si... se non vuoi colonne d'appoggio ed hai aggiunto un vincolo, la formula diventerebbe veramente troppo lunga (considerando che parli di 2000 righe, il calcolo diventerebbe alquanto pesante).

    Ti propongo una soluzione in VBA.
    Nel file ho aggiunto il foglio "Con VBA" dove ho messo il pulsante "Controlla..." per far partire il codice:

    Codice: 
    Option Explicit
    
    
    Sub Controllo()
    Dim uRiga As Long, Vincolo1 As Integer, Vincolo2 As String, Vincolo3 As String
    Dim Somma As Double, Alto As Integer, i As Long, j As Long, uRigaCanc As Long
    
    
    Application.ScreenUpdating = False
    uRiga = Range("B" & Rows.Count).End(xlUp).Row
    If Range("F3").Value <> "" Then
        uRigaCanc = Range("F2").End(xlDown).Row
        Range("F3:H" & uRigaCanc).ClearContents
    End If
    Vincolo1 = 46
    Vincolo2 = "X1"
    Vincolo3 = "XSX"
    j = 3
    
    
    For i = 3 To uRiga
        If Range("C" & i).Value = Vincolo1 And Range("D" & i).Value = Vincolo2 Or _
            Range("C" & i).Value < Range("C" & i - 1).Value And Range("C" & i).Value <> "" _
            And Range("D" & i).Value = Vincolo2 Then
            Somma = Somma + Range("B" & i).Value
            Alto = Range("C" & i).Value
            i = i + 1
            Do While Range("C" & i).Value <> Vincolo1 And Range("D" & i).Value = Vincolo2 And _
                Range("C" & i).Value <> "" And Range("C" & i).Value <> Vincolo3 _
                And Range("C" & i).Value > Alto
                Somma = Somma + Range("B" & i).Value
                If Range("C" & i).Value > Alto Then
                    Alto = Range("C" & i).Value
                End If
                i = i + 1
            Loop
            i = i - 1
            Range("F" & j).Value = j - 2 & "°"
            Range("G" & j).Value = Somma
            Range("h" & j).Value = Alto
            j = j + 1
            Somma = 0
            Alto = 0
        End If
    Next i
    Application.ScreenUpdating = True
    End Sub
    Dagli un'occhiata...
    File Allegati File Allegati

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

  6. #5
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    @Ges: La formula che hai postato non tiene conto della nuova esigenza che nasce al rigo 17

    In effetti, come hai sottolineato, non sono stato chiarissimo nella spiegazione.
    Infatti il range termina quando vi è il primo spazio libero o vi è la parola "XSX" o reincontra il 46 o un numero inferiore a quello nella cella superiore (come in cella C17 vi è un numero < al numero presente in cella C16)

    @cromagno: LA MACRO E' FANTASTICA. Purtroppo però il Vba, essendo un mio limite, preferisco utilizzare le funzioni al fine di non dipendere sempre da qualcuno che mi deve aiutare in caso di necessita.
    Il criterio ti è chiarissimo, se riuscissi ad ottenere questo risultato in un'unica formula sarebbe eccezionale.

    Grazie a tutti.
    Sasyjoe

  7. #6

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao,
    pensavo avessi risolto col VBA e non ci ho più provato con le formule.
    Ci proverò a tempo perso , visto che son passati un bel pò di giorni dall'ultimo post, non credo sia urgente...
    Fammi sapere se invece lo è . :32:
    Ultima modifica fatta da:cromagno; 24/02/16 alle 06:08

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

  8. #7
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    Non è urgente.
    confido in un tuo aiuto appena ti è possibile.

    Grazie mille
    Ultima modifica fatta da:Canapone; 10/05/17 alle 14:57

  9. #8
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao a tutti,

    ho capito così:

    =SE(O(E(C6=46;D6="X1");E(D6="X1";C6<C5;C5>0));SOMMA(B6:INDICE(B6:B$67;MIN(SE.ERRORE(CONFRONTA(1;INDICE(--VAL.VUOTO(C6:C$67););0)-1;10000);SE.ERRORE(CONFRONTA("XSX";C7:C$67;0);10000);SE.ERRORE(CONFRONTA(1;INDICE((C7:$C$67>=46)*(C6:$C$66>C7:$C$67););0);10000))));"")


    Saluti

  10. I seguenti 2 utenti hanno dato un "Like" a Canapone per questo post:


  11. #9

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da Canapone Visualizza Messaggio
    Ciao a tutti,
    ho capito così:

    =SE(O(E(C6=46;D6="X1");E(D6="X1";C6<C5;C5>0));SOMMA(B6:INDICE(B6:B$67;MIN(SE.ERRORE(CONFRONTA(1;INDICE(--VAL.VUOTO(C6:C$67););0)-1;10000);SE.ERRORE(CONFRONTA("XSX";C7:C$67;0);10000);SE.ERRORE(CONFRONTA(1;INDICE((C7:$C$67>=46)*(C6:$C$66>C7:$C$67););0);10000))));"")

    Saluti
    Ciao Stefano,
    ho provato la tua formula e sembrerebbe funzionare, anche se lascia molte celle vuote (copiandola in basso) tra un risultato ed il successivo.
    Ho visto anche che inizi volutamente il confronto dalla riga 6 e non da inizio tabella... questo potrebbe influire sui risultati?

    Intanto posto un'alternativa per la SOMMA (formula matriciale - da mettere nella cella G3 e copiare in basso):

    =SOMMA(INDIRETTO("B"&PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))&":B"&PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2)-1))

    e per il valore più alto (formula matriciale - cella H3 e copiare in basso):

    =MAX(INDIRETTO("C"&PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))&":C"&PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2)-1))

    A questo punto però mi serve capire un'anomalia che suppongo derivi da qualche incompatibilità con la funzione INDIRETTO...:171: :92:

    Come si può vedere, nelle formule non ho messo il SE.ERRORE iniziale per restituire la cella vuota in caso di errore.
    Infatti, inserendo il SE.ERRORE, il risultato della formula cambia completamente (non più corretto) ed analizzando la formula con lo strumento "valuta formula" si nota che la funzione INDIRETTO restituisce un errore #VALORE, ma la funzione SE.ERRORE invece di restituire la cella vuota (come da istruzioni) mi restituisce un valore che non capisco dove prenda.

    Ringrazio in anticipo chiunque mi possa illuminare su questa anomalia :286:
    File Allegati File Allegati

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

  12. I seguenti 2 utenti hanno dato un "Like" a cromagno per questo post:


  13. #10

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Ciao Cromagno, non sono sicuro che dipenda da una anomalia di INDIRETTO perchè ho visto che le altre formule nidificate di PICCOLO funzionano proprio in quanto è presente il SE.ERRORE e quindi continuano a funzionare se lo metti all'inizio di tutta la formula nella fase finale però sbagliando, anche perchè se provi INDIRETTO con un'altra qualsiasi formula inserendo il SE.ERRORE iniziale funziona.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  14. #11

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao Cromagno, non sono sicuro che dipenda da una anomalia di INDIRETTO perchè ho visto che le altre formule nidificate di PICCOLO funzionano proprio in quanto è presente il SE.ERRORE e quindi continuano a funzionare se lo metti all'inizio di tutta la formula nella fase finale però sbagliando, anche perchè se provi INDIRETTO con un'altra qualsiasi formula inserendo il SE.ERRORE iniziale funziona.
    Ciao ges,
    ho provato anche usando INDIRETTO e INDIRIZZO combinati, VAL.ERRORE e altre prove.... nulla da fare. :273:

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

  15. #12
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    non so risponderti, ho preferito usare la colonna d'appoggio per non usare INDIRETTO, non conoscendo la dimensione del file con il quale si dovrà lavorare.

    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))


    =MAX(INDIRETTO("C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))


    Credo che il se.errore intercetti l'errore iniziale prodotto da min e max. Sono d'accordo con Ges: INDIRETTO non ha questa colpa.

    Le due formule spostano in caso d'errore il calcolo sulla millesima riga; da qui lo zero.

    Probabile quindo che la formula debba essere subire un piccolo aggiustamento ( i 1000 possono diventare 100000)

    Spero sia d'aiuto

    Saluti

  16. #13
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    Tutte le formule funzionano!

    In particolar modo, le ultime postate da Cromagno sono perfette.

    Vorrei solo aggiungere VAL.ERRORE come ad esempio di seguito:

    =SE(VAL.ERRORE(SOMMA(INDIRETTO("B"&PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))&":B"&PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2)-1)));"";SOMMA(INDIRETTO("B"&PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))&":B"&PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2)-1)))

    MODIFICA:
    No problem!
    Altrimenti risolvo con formattazione condizionale

  17. #14
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    Faccio una domanda, forse banale:

    Se in cella D6 al posto di "X1" ho "X1 + 2", è sufficente, al fine di non cambiare le formule, aggiungere gli "*"?

    Per esempio, trasformo questa formula:

    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))


    in:


    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="*X1*"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="*X1*"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"*X1*"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))

    Giusto?

  18. #15
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    prova così:

    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("X1";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2);1000)-1))

    Il problema che hai riscontrato con il VAL.ERRORE era il problema sollevato da Cromagno.

    Il segmento in rosso mi sembra più interessante.

    Spero sia d'aiuto

  19. I seguenti 2 utenti hanno dato un "Like" a Canapone per questo post:


  20. #16

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da Sasyjoe Visualizza Messaggio
    MODIFICA:
    No problem!
    Altrimenti risolvo con formattazione condizionale
    Si, mi sa che è l'unica soluzione a cui ho pensato anche io.

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

  21. #17
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    @ Canapone:

    Per favore puoi modificarmi anche questa formula con lo stesso criterio del "*X1*":

    =MAX(INDIRETTO("C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="Bingo one"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="bingo one"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"bingo one"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))

    Cioè vorrei ottenere il risultato anche se in cella vi è "X1+2"

    Grazie

    @Cromagno
    Credo Canapone abbia risolto anche il problema del #NUM! con la sua formula :D

  22. #18
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao

    Hai un piccolo esempio?

    Non ho capito se basta questo:

    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("bingo one";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("bingo one";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("bingo one";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2);1000)-1))


    Ho sostituito nella formula X1 con Bingo one

  23. #19
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    Se in cella D6 al posto di "X1" ho "X1 + 2", è sufficente, al fine di non cambiare le formule, aggiungere gli "*"?

    Per esempio, trasformo questa formula:

    =MAX(INDIRETTO("C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="X1"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"X1"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))

    in:


    =MAX(INDIRETTO("C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="*X1*"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1));1000)&":C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($C$3:$C$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/($D$3:$D$1000="*X1*"))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(F1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+($D$3:$D$1000<>"*X1*"))>0);""))*RIF.RIGA($C$3:$C$1000);"");2);1000)-1))


    La prima formula che mi hai postato (per intenderci qualle che va in cella G3) funziona mentre l'utlima (quella che andrebbe in H3) non funziona

    Quindi la sottostante formula NON mi da il risultato desiderato:

    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("bingo one";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("bingo one";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("bingo one";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2);1000)-1))

    In conclusione mi manca la formula per la cella H3 con la possibilità di avere in cella D6 non per forza X1 ma anche X1+2 (o altre variabili)

  24. #20
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    posso sbagliarmi: le formule con gli asterischi a te funzionano? Se sì, sono fuori strada

  25. #21
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    No!
    Non funzionano.
    Aggiungo io gli asterischi per farti capire cosa vorrei ottenere.

    In effetti la mia richiesta la hai esaudita per la formula in cella G3.
    Vorrei avere la stessa facoltà (non avere per forza X1 in cella D6 ma vabene anche X1+altro) nella formula in cella H3

    Scusami se sono stato poco preciso
    Spero che questa volta sono stato chiaro

  26. #22
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    riparto da qui

    =SOMMA(INDIRETTO("B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/
    VAL.NUMERO(RICERCA("X1";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1));1000)&":B"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("X1";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2);1000)-1))

    Questa dovrebbe leggere le stringhe che contengono X1 + "altro" (quindi - esempio X1+2 o X1 + Bingo)

    La corrispondente formula in H3 sempre matriciale è questa

    =MAX(INDIRETTO("C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1));1000)&":C"&SE.ERRORE(PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("X1";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2);1000)-1))


    Legge invece il numero più alto nella colonna C, negli intervalli individuati dalla formula.

    Segue il principio della formula in G3.

    Non so se ho capito la tua esigenza. Fosse il caso, vediamo se qualche amico del Forum riesce ad aiutarti.

    Seguo la discussione.

  27. #23
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    Citazione Originariamente Scritto da Canapone Visualizza Messaggio
    ....

    Hai risolto! Grazie mille
    Ultima modifica fatta da:Canapone; 10/05/17 alle 14:57

  28. I seguenti utenti hanno dato un "Like"


  29. #24
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Bene.

    Grazie del riscontro.

    Saluti

  30. #25

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da Sasyjoe Visualizza Messaggio
    @Cromagno
    Credo Canapone abbia risolto anche il problema del #NUM! con la sua formula :D
    Ciao,
    in effetti non c'è più l'errore ma lo "0", però il problema rimane irrisolto :187:

    Con il SE.ERRRORE (se avesse funzionato) che restituisce la cella vuota anche le altre celle (colonne F e H) sarebbero state vuote e tu avresti avuto solo i dati che effettivamente eseguivano una somma.
    Visto che la formula la copierai sicuramente in basso per molte righe (in previsione di aggiunte di dati nella prima tabella), avere le celle vuote avrebbe reso il tutto più gradevole "esteticamente", mentre così (a meno di non usare la formattazione condizionale) ti ritroverai sempre con tutte le righe "impegnate".

    Comunque, l'importante è che si abbia risolto :246:

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

  31. #26
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    anch'io non sono riuscito a gestire lo zero dalla formula. L'unico modo trovato è il formato personalizzato del tipo "#.###;;" o immettere la formula entro TESTO con lo stesso formato, ma come risultato non otterremo più dei numeri.

    Forse la formula può essere anche ridotta.

    Saluti

  32. #27
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    credo sia la volatilità di INDIRETTO a creare il malfunzionamento.

    Usando INDICE sembra che il problema si risolva.

    =SE.ERRORE(SOMMA(INDICE($B$1:$B$1000;PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1))):INDICE($B$1:$B$1000;PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("X1";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2)-1));"")


    =SE.ERRORE(MAX(INDICE($C$1:$C$1000;PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000))*RIF.RIGA($3:$1000));"");RIF.RIGA(A1));):INDICE($C$1:$C$1000;PICCOLO(SE.ERRORE((1/(RIF.RIGA($3:$1000)>=PICCOLO(SE.ERRORE((1/(($C$3:$C$1000=46)+($C$3:$C$1000<$C$2:$C$999)>0))*(1/($C$3:$C$1000<>""))*(1/VAL.NUMERO(RICERCA("X1";$D$3:$D$1000)))*RIF.RIGA($C$3:$C$1000);"");RIF.RIGA(A1))))*(SE.ERRORE(1/((($C$3:$C$1000<$C$2:$C$999)+($C$3:$C$1000=46)+($C$3:$C$1000="XSX")+VAL.ERRORE(RICERCA("X1";$D$3:$D$1000)))>0);""))*RIF.RIGA($3:$1000);"");2);));"")


    Saluti

  33. I seguenti 2 utenti hanno dato un "Like" a Canapone per questo post:


  34. #28

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da Canapone Visualizza Messaggio
    Ciao,

    credo sia la volatilità di INDIRETTO a creare il malfunzionamento.

    Usando INDICE sembra che il problema si risolva.
    Saluti
    Ciao Stefano,
    Quindi avevo ragione a sospettare di INDIRETTO...

    Con INDICE funziona alla grande!
    Anche stavolta la coppa è tua :18::97:

    Ciao
    Tore

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

  35. #29
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1075
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    202
    Ciao,

    grazie Tore.

    Saluti

Discussioni Simili

  1. Creazione formula (molto) complessa
    Di Duchess@71 nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 24/01/17, 19:49
  2. [Risolto] Aiuto per Formula matriciale per inserimento dati in cella
    Di andrea1897 nel forum Domande su Excel in generale
    Risposte: 19
    Ultimo Messaggio: 19/12/16, 10:31
  3. Problema con formula matriciale
    Di Raffaele_53 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 01/07/16, 17:58
  4. Formattazione condizionale: come usare formula matriciale?
    Di follaro nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 09/01/16, 20:52
  5. Risposte: 16
    Ultimo Messaggio: 25/08/15, 10:05

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
  •