uso formula matriciale



  • uso formula matriciale?
    di paganiva (utente non iscritto) data: 08/05/2016 12:05:48

    Saluti a tutti.
    Sto cercando una soluzione che non è alla mia portata, per riuscire a automatizzare il trasporto dei dati da un calendario gare sportive giornaliero, a singoli calendari gare suddivisi per categorie partecipanti.
    Ho pensato all'uso di una formula di matrice, ma anche se riuscissi a adattare una copiata nel web, probabilmente non serve allo scopo.
    Non è semplice spiegarmi, conoscendo a mala pena alcuni termini del Vba, per questo credo che allegando un file sia la cosa più semplice.
    Comunque grazie
     
    {=SE(RIGHE(B$3:B3)>CONTA.SE($E$306:$E$512;B$1);"";INDICE($B$306:$B$512;PICCOLO(SE($E$306:$E$512=B$1;RIF.RIGA($A$306:$A$512)-1);RIGHE(B$3:B3))))}



  • di paganiva (utente non iscritto) data: 08/05/2016 12:11:38

    Stranamente il file è di 5 MB, non capisco perchè, provo a alleggerirlo, ma sono solo dati.



  • di paganiva (utente non iscritto) data: 08/05/2016 12:23:46

    Ho copiato il foglio su un nuovo file, adesso è poco più di 37 kb, addirittura prima era un xlsm adesso un sempli xls.
    Mistero, allego il file



  • di cromagno data: 08/05/2016 13:46:01

    Ciao paganiva,
    certo che la struttura del tuo foglio non è delle più semplici per poter adattare una formula valida per tutte le tabelle (che non hanno nemmeno sempre lo stesso numero di righe)...

    Comunque, a partire dalla cella A3, puoi utilizzare questa formula matriciale (da confermare quindi con la combinazione di tasti CTRL+MAIUSC+INVIO) e dopo copiarla in basso e a destra (per tutte le tabelle):

    =SE.ERRORE(INDICE($A$1:$G$512;PICCOLO(SE(ANNULLA.SPAZI($E$306:$E$512)=ANNULLA.SPAZI(INDIRETTO("B"&MAX(SE(NON(VAL.ERRORE(TROVA("CAT.";$B$1:$B2)));1;0)*RIF.RIGA($B$1:$B2))));RIF.RIGA($E$306:$E$512);"");RIF.RIGA()-(MAX(SE(NON(VAL.ERRORE(TROVA("CAT.";$B$1:$B2)));1;0)*RIF.RIGA($B$1:$B2))+1));RIF.COLONNA());"")

    Ti riallego il file ("Torneo1 - last")... ho messo le formule solo nelle prime tre tabelle.



  • di cromagno data: 08/05/2016 13:48:16

    Ciao paganiva,
    certo che la struttura del tuo foglio non è delle più semplici per poter adattare una formula valida per tutte le tabelle (che non hanno nemmeno sempre lo stesso numero di righe)...

    Comunque, a partire dalla cella A3, puoi utilizzare questa formula matriciale (da confermare quindi con la combinazione di tasti CTRL+MAIUSC+INVIO) e dopo copiarla in basso e a destra (per tutte le tabelle):

    =SE.ERRORE(INDICE($A$1:$G$512;PICCOLO(SE(ANNULLA.SPAZI($E$306:$E$512)=ANNULLA.SPAZI
    (INDIRETTO("B"&MAX(SE(NON(VAL.ERRORE(TROVA("CAT.";$B$1:$B2)));1;0)*RIF.RIGA($B$1:$B2))
    ));RIF.RIGA($E$306:$E$512);"");RIF.RIGA()-(MAX(SE(NON(VAL.ERRORE(TROVA("CAT.";$B$1:$B2)));1;0)
    *RIF.RIGA($B$1:$B2))+1));RIF.COLONNA());"")

    Ti riallego il file ("Torneo1 - last")... ho messo le formule solo nelle prime tre tabelle.

    [EDIT]
    C'è sempre il problema che non visualizza interamente le formule troppo lunghe qui sul forum, quindi ho mandato "a capo" manualmente...



  • di paganiva (utente non iscritto) data: 08/05/2016 14:04:09

    Grazie cromagno, provo a riportare la formula nel file e ad adattarla a tutte le situazioni.
    Attendo a mettere risolto ma credo che non ci siano problemi.
    Saluti e grazie