Confronto tabelle Calc

Salve a tutti, hoo un file con la struttura (anche allegato) :slight_smile:
num progr | nome 1 | nome 2 | nome 3 | giorno | ora inizio | ora fine | argomento

sono attività che coinvolgono più persone, non sempre le stesse e non lo stesso numero.

ora vorrei rimaneggiare (a macchina) la tabella in modo che il foglio per ogni colonna nome abbia una riga, con però le altre colonne significative mantenute, per ottenere tipo record di un database:

num prog | nome 1 | giorno | ora inizio | ora fine | argomento
num prog | nome 2 | giorno | ora inizio | ora fine | argomento
etc

lo scopo è di confrontarla con un altro foglio co la stessa struttura
come posso fare?
Grazie
esempio1.ods (16.3 KB)

Una formula piuttosto folle, ma che soddisfa le vostre esigenze.

{=OFFSET($A$2,
INT((ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))-1)/COLUMNS(B1:I1)),
CHOOSE({1,2,3,4,5,6},
ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))^0*0,
MOD(ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))-1,COLUMNS(B1:I1))+1,
ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))^0*9,
ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))^0*10,
ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))^0*11,
ROW(INDIRECT("1:"&ROWS(A2:A6)*COLUMNS(B1:I1)))^0*12))}

E qui c’è ancora un filtraggio:
=IFERROR(INDEX(A11:F50,AGGREGATE(15,6,ROW(1:40)/(B11:B50<>""),ROW(1:40))),"")

esempio1.ods (26,9 KB)

Buonasera Ti propongo anche la mia soluzione che prevede una colonna d’appoggio.
In O2 crea la colonna d’appoggio con
=SE(A2="";"";CONTA.VALORI(B2:I2))
che conta quanti nomi ci sono per ogni riga.
Poi in C2 del Foglio2 metto
=SE(INDICE(Foglio1.$J$2:$J$20;CONFRONTA(0;CONTA.SE($C$1:C1;Foglio1.$J$2:$J$20)=Foglio1.$O$2:$O$20;0))=0;"";INDICE(Foglio1.$J$2:$J$20;CONFRONTA(0;CONTA.SE($C$1:C1;Foglio1.$J$2:$J$20)=Foglio1.$O$2:$O$20;0)))
e distribuisco le date.
Poi in B2 per ricavare i nomi metto
=SE.ERRORE(INDICE(Foglio1.$B$2:$I$20;CONFRONTA(C2;Foglio1.$J$2:$J$20;0);CONTA.SE($C$2:C2;C2));"")
In A2 per il progressivo
=SE(B2 ="";"";INDICE(Foglio1.$A$2:$A$20;CONFRONTA(0;CONTA.SE(A$1:$C1;Foglio1.$J$2:$J$20)=Foglio1.$O$2:$O$20;0)))
e infine in D2 da tirare a destra e in basso uso
=SE.ERRORE(INDICE(Foglio1.K$2:K$20;CONFRONTA($C2;$Foglio1.$J$2:$J$20;0));"")
Ps.: i miei range arrivano a riga 20 tu aumentali per come ti possono servire.
Allego file
esempio1(bis).ods (18.0 KB)

…sono passati nove giorni e nessun riscontro… :roll_eyes:

Buongiorno,
sono stato preso da altre cose e non ho potuto mettere l’adeguata attenzione.
trovo delle difficoltà a far funzionare quanto da lei cortesemente indicato, in particolare, in A2 per il progressivo, trascinando in giù la formula mi restituisce sempre il valore della prima occorrenza della formula (allego screenshot)


in particolare mi sfugge la differenza in (non ho trovato doc esauriente) tra =se(B2=" “;” "… riguardo il numero di spazi, cosa rappresentano?

analogamente le altre formule indicate che nel file di esempio sono ok, nel mio (che ha la stessa truttura di colonne ) restituiscono sempre cella vuota.
vero che il diavolo è nei dettagli ma dove devo cercare l’errore?
Allego anche foglio originale con due ricge e nomi cambiati.
Grazie
odsempio-2024.ods (15.0 KB)

Buondì. Ho corretto le formule così.
In A2 del Foglio2 ho messo
=SE(INDICE(Foglio1.$A$2:$A$134;CONFRONTA(0;CONTA.SE($A$1:$A1;Foglio1.$A$2:$A$134)=Foglio1.$O$2:$O$134;0))=0;"";INDICE(Foglio1.$A$2:$A$134;CONFRONTA(0;CONTA.SE($A$1:$A1;Foglio1.$A$2:$A$134)=Foglio1.$O$2:$O$134;0)))
e tirata in basso.
In B2
=SE.ERRORE(INDICE(Foglio1.$B$2:$I$134;CONFRONTA($A2;Foglio1.$A$2:$A$134;0);CONTA.SE($A$2:$A2;$A2));"")
anche questa tirata in basso.
E infine in C2, da tirare a destra e in basso ho messo
=SE.ERRORE(INDICE(Foglio1.J$2:J$134;CONFRONTA($A2;Foglio1.$A$2:$A$36;0));"")
Ho corretto anche la formula in O2 del Foglio1 così
=SE(A2="";"";CONTA.VALORI(B2:I2))
Come vedi, anche per rispondere al tuo quesito, non ci sono spazi tra le virgolette, e il significato della formula è: se A2 è vuota allora lascia vuoto altrimenti fai la formula (o qualcos’altro a seconda dei casi).
odsempio-2024 (bis).ods (40.2 KB)

Ps.: la formula in O2 va tirata in basso per quanto ti può servire, così quando compili gli altri campi si riempie automaticamente… e anche il Foglio2.

Grazie,
verifico subito!
rimango sempre meravigliato di cosa si possa fare, ma questa complessità (formule annidate etc) mi ha sempre creato qualche problema

Alexander

Ok, tutto sistemato!
ho riproposto le formule per le altre colonne, sistemando l’intervallo sino 134 (al posto del 36 di “test”) e il risultato è perfetto.
Non smette mai di imparare!

Grazie Ancora!
Alexander

Di nulla. Grazie del riscontro.