salve
la formula è semplice:
=MATR.SOMMA.PRODOTTO((SINISTRA($B$18:$B$52;5)="P1100") *((STRINGA.ESTRAI($B$18:$B$52;7;1)="B")*($D$18:$D$52)))
La funzione MATRICE.SOMMA.PRODOTTO moltiplica matrici tra di loro e calcola il totale del prdotto.
Nel nostro caso le tre matrici sono:
1) (SINISTRA($B$18:$B$52;5)="P1100")
questa matrice utilizza la funzione "SINISTRA" per estrarre solo le prime 5 posizioni del codice e le compara con il valore
P1100 restituendo come risultato un valore logico Vero/Falso
2) (STRINGA.ESTRAI($B$18:$B$52;7;1)="B")
questa matrice estrae la settima posizione del codice e la compara con il valore "B" restituendo anch'essa come risultato un valore logico Vero/Falso.
3)($D$18:$D$52)))
questa matrice non è altro che l'insieme dei valori di colonna D .
es:
P1100BBBHV q.ta 10
P1100BBDHV q.ta 15
P1100BDPHV q.ta 20
il risultato finale della formula : =MATR.SOMMA.PRODOTTO((SINISTRA($B$18:$B$52;5)="P1100") *((STRINGA.ESTRAI($B$18:$B$52;7;1)="B")*($D$18:$D$52))) sarà:
(vero*vero*10) + (vero*vero*15)+ (vero*falso*20) equivalente a 10+15+0 = 25
Nel caso tu voglia utilizzare un carattere in una diversa posizione del codice, devi cambiare nella funzione STRINGA.ESTRAI
l'indicazione della posizione all'interno del codice:
STRINGA.ESTRAI: Testo (la matrice su cui intendi effettuare l'operazione nel nostro caso B18:B52-) Inizio( la posizione all'interno del codice ) Num.Caratt(quanti caratteri si intende estrarre a partire dalla posizione inizio)
saluti
Andrea
Ps. Il mio lavoro è quello di consulente aziendale per l'ottimizzazione delle risorse.