Ciao
Conosco discretamente quella routine della TM.
Il ciclo che devi analizzare è il seguente:
For J = 0 To UBound(Rslt)
arr0 = Split(Rslt(J), ",")
For I = 0 To UBound(arr0)
Cells(drow, dcol) = Cells(arr0(I) + 2, 2)
drow = drow + 1
Next
dcol = dcol + 1
drow = 1
Next
NOTA: nella variabile array Rslt vanno a finire tutte le combinazioni che generano la somma richiesta in B2.
Da tenere presente che tali combinazioni NON rappresentano i numeri che compongono la somma, BENSI' le celle della colonna B (
a partire dalla riga 3 - quindi 3=1) che contengono i numeri.
Per esempio, se Rslt(0) è pari a 3,5,7
le celle che compongono la somma si trovano in:
B5,B7 e B9.
Ciò premesso, per sapere da quanti "numeri" è composta la somma del risultato, e visto che nell' Rlst gli elementi sono separati da virgola (,), potresti contare tali virgole per ogni item dell'array e, se corrispondono a quanto cercato, stampare solo quelle.
Esempio: cerchi solo le combinazioni con 5 addendi:
For J = 0 To UBound(Rslt)
quanti = Len(Rslt(J)) - Len(Replace(Rslt(J), ",", "")) + 1 '<<<<<<<
If quanti = 5 Then '<<<<<<
arr0 = Split(Rslt(J), ",")
For I = 0 To UBound(arr0)
Cells(drow, dcol) = Cells(arr0(I) + 2, 2)
drow = drow + 1
Next
dcol = dcol + 1
drow = 1
End If '<<<<<<
Next
Saluti
[Modificato da dodo47 04/11/2018 18:55]
Domenico
Win 10 - Excel 2016