é possibile fare in modo che una LAMBDA a cui si passa una matrice restituisca un valore singolo non una matrice
crea un valore accumulativo della funziona in una sola cella
la funziona LAMBDA può essere sia numerica che di testo


funziona in maniera simile a SCAN ma restando nella stessa cella


sintassi
=REDUCE(valore/testo iniziale, intervallo, LAMBDA(x variabile accumulativa,y variabile valore,funzione))
=REDUCE(valore/testo iniziale, intervallo, LAMBDA(x variabile accumulativa,y variabile valore,funzione))




esempio: calcolo la somma di una matrice
=REDUCE(0,{1,2,3,4,5},LAMBDA(a,b,a+b))

15




esempio: calcolo la somma di una matrice
sommiamo tutit i numeri di una matrice in una cella usando LAMBDA

=REDUCE(0,A1:C3,LAMBDA(a,b,a+b))

image039.jpg




esempio: somma consizionale, come SOMMA.PIU.SE (SUMIFS)
sommiamo tutti i numeri di una matrice B2:B11
in una cella usando LAMBDA ma con una condizione che verifica se il valore é maggiore di 50

=REDUCE(0,B2:B11,LAMBDA(a,v,SE(v>50,a+v,a)))
=REDUCE(0,B2:B11,LAMBDA(a,v,IF(v>50,a+v,a)))

image154.jpg




esempio: sommiamo i valori din un intervallo verificando lo stato nel testo
a seconda della sigla dello stato della matrice estraiamo dal testo il valore e lo sommiamo
come fare un SUMIFS in cui la condizione é nel testo usando le funzioni di strazione del testo

=REDUCE(0,B2:B13,LAMBDA(a,v,SE(TESTO.PRECEDENTE(v,"-")=D2:D5,a+TESTO.SUCCESSIVO(v,"-"),a)))
=REDUCE(0,B2:B13,LAMBDA(a,v,IF(TEXTBEFORE(v,"-")=D2:D5,a+TEXTAFTER(v,"-"),a)))

image155.jpg




esempio: funzione testo accodo il testo a seonda della sigla dello stato
a seconda della sigla dello stato della matrice estraiamo dal testo il valore e lo sommiamo
come fare un SUMIFS in cui la condizione é nel testo usando le funzioni di strazione del testo

=SOSTITUISCI(REDUCE("",A2:A13,LAMBDA(a,v,SE(TESTO.SUCCESSIVO(v,", ")=C2:C4,a & ", "&TESTO.PRECEDENTE(v,","),a))),", ","",1)
=SUBSTITUTE(REDUCE("",A2:A13,LAMBDA(a,v,IF(TEXTAFTER(v,", ")=C2:C4,a&", " & TEXTBEFORE(v,","),a))),", ","",1)

image156.jpg




esempio: sostutuzione massiva di testo in base ad una tabella mappatura
questa formula sostutisce dei valori in un testo con altri valori nella stessa cella
la formula cerca nel testo della colonna B i valori della tabella nella colonna E e li sosuisice nella stessa cella con quelli della colonna F
all fine é come fare un sosituisci più volte nella stessa cella usando una tabella come mappatura

=REDUCE(B2:B11,E2:E5,LAMBDA(a,v,SOSTITUISCI(a,v,CERCA.X(v,E2:E5,F2:F5))))
=REDUCE(B2:B11,E2:E5,LAMBDA(a,v,SUBSTITUTE(a,v,XLOOKUP(v,E2:E5,F2:F5))))

image157.jpg




esempio: divisione di una colonna in più colonne
é possibile utilizzare la funzione DIVIDI.TESTO( (TEXTSPLIT)
anche su un intervallo colonna invece che su una cella singola

faccedenolo direttamente non funziona
le formule che creano array non funzionano se l'argomento passato é un array a sua volta

=DIVIDI.TESTO(Tabella[Dati],",")
=TEXTSPLIT(Tabella[Dati],",")

non funziona
image158.jpg


si può usare questa formula che usa REDUCE


=ESCLUDI(REDUCE("",Tabella[Dati],LAMBDA(a,v,STACK.VERT(a,DIVIDI.TESTO(v,",")))),1)
=DROP(REDUCE("",Tabella[Dati],LAMBDA(a,v,VSTACK(a,TEXTSPLIT(v,",")))),1)

image159.jpg