con una macro puede hacerse
a continuación te dejo un fragmento de un código que hice hace algún tiempo...
es algo rudimentario pero funciona... tengo una versión para n_uplas y más optimizada, pero es demasiado compleja y falta depurarla...
esta versión es para combinar sólo de a dos sumandos por vez, no es muy
difÃcil hacerlo para 3 y 4 sumandos
NOTA: los sumandos deben estar en orden creciente
Option Explicit
Option Base 1
'//By JuanC - Dic. 2007
Private S2() As Double
Sub n2_upla()
Dim v As Variant
Dim m&, i#, j#
Dim t1#, t2#
Dim dR#, dSum#, lOff&, lCount&
On Error GoTo fin
'//Valor buscado (celda C3)
dR = [C3]
[E3:E1000] = "" '//Rango de posibles resultados
lOff = 0
lCount = 0
'//Rango de datos
v = Range("A3:A6")
'//El valor buscado debe ser menor a la suma total
dSum = Application.WorksheetFunction.Sum(v)
If dR > dSum Then
[E3] = "Sum. máx.: " & dSum
GoTo fin
End If
m = UBound(v, 1)
'//El valor buscado debe ser mayor a la suma de los menores
dSum = Application.WorksheetFunction.Sum(v(1, 1), v(2, 1))
If dR < dSum Then
[E3] = "Sum. mÃn.: " & dSum
GoTo fin
End If
'//El valor buscado debe ser menor a la suma de los mayores
dSum = Application.WorksheetFunction.Sum(v(m, 1), v(m - 1, 1))
If dR > dSum Then
[E3] = "Sum. máx.: " & dSum
GoTo fin
End If
'//Calcula combinaciones tomando de a dos C(m,n)
For t1 = 1 To m - 1
i = v(t1, 1)
For t2 = t1 + 1 To m
j = v(t2, 1)
dSum = (i + j)
lCount = lCount + 1
ReDim Preserve S2(lCount) As Double
S2(lCount) = dSum
If dR = dSum Then
[E3].Offset(lOff) = i & "+" & j
lOff = lOff + 1
End If
Next
Next
fin:
If lOff = 0 Then [E3] = "-"
Erase v
Erase S2
End Sub
Saludos desde Baires, JuanC