A chi interessa ancora: ho risolto il problema con la seguente macro:
Sub SommaSelezionate()
Dim somma As Double
Dim contatore As Integer
Dim contatoreSelezionati As Integer
Dim contatoreSomma As Integer
Dim pivot As Integer
Dim differenza As Double
Dim limite As Double
Dim idCella As String
Dim idCellaVal As String
Dim valCella As String
Dim valCellaVal As Double
Dim destCella As String
Dim partCella As String
Dim diffCella As String
Dim idDestCella As String
somma = 0
contatoreSomma = 0
limite = Application.Range("A100").Value
For contatore = 1 To 96
contatoreSomma = contatoreSomma + 1
idCella = "A" & contatore
idCellaVal = Application.Range(idCella).Value
valCella = "B" & contatore
valCellaVal = Application.Range(valCella).Value
valCellaVal = Round(valCellaVal, 2)
somma = somma + valCellaVal
destCella = "D" & contatoreSomma
Application.Range(destCella).Value = idCellaVal
If somma > limite Then
destCella = "D" & contatoreSomma
Application.Range(destCella).Value = ""
somma = somma - valCellaVal
contatoreSomma = contatoreSomma - 1
End If
Next
contatoreSomma = contatoreSomma + 1
MsgBox "Somma = " & somma
MsgBox "Contatore = " & contatoreSomma
differenza = limite - somma
differenza = Round(differenza, 2)
For contatore = 1 To 96
idCella = "A" & contatore
idCellaVal = Application.Range(idCella).Value
pivot = 0
For contatoreSelezionati = 1 To contatoreSomma - 1
destCella = "D" & contatoreSelezionati
idDestCella = Application.Range(destCella).Value
If idDestCella = idCellaVal Then
pivot = 1
Exit For
End If
Next
If pivot = 0 Then
valCella = "B" & contatore
valCellaVal = Application.Range(valCella).Value
valCellaVal = Round(valCellaVal, 2)
If valCellaVal >= differenza Then
destCella = "D" & contatoreSomma
partCella = "E" & contatoreSomma
diffCella = "F" & contatoreSomma
Application.Range(destCella).Value = idCellaVal
Application.Range(partCella).Value = differenza
Application.Range(diffCella).Value = valCellaVal - differenza
Exit For
End If
End If
Next
End Sub
ove nella colonna A occorre mettere gli identificativi dei valori da selezionare, e nella colonna B i valori veri e propri. Ognuno di voi potrà apportare i miglioramenti che preferisce... il primo da apportare è che ho "cablato" nel codice di considerare 96 valori, chiunque può inventarsi un ciclo Do...Loop che rilevi la prima cella vuota...
Kisses,
Nat