Excel - combinacion numerica

   
Vista:

combinacion numerica

Publicado por Elisa (1 intervención) el 01/08/2008 02:40:58
Necesitaria saber si alguien conoce alguna funcion en el excel que permita, si tengo una columna de números distintos saber de esa columna la combinación de números que formarían un monto x.
Por ejemplo: tengo en una columna los numeros 2, 5, 6 y 8. La combinacion que me daria el monto "11" seria el 5 y el 6.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:combinacion numerica

Publicado por m0skit0 (12 intervenciones) el 01/08/2008 15:47:54
Tú sí que monto.

Una función desde luego no hay. Lo que planteas es bastante complejo puesto que hay que comprobar todas las combinaciones de números que haya en la columna. Lo cual nos lleva a la siguiente pregunta: ¿qué hacer cuando haya varias combinaciones que den como suma X? Por ejemplo, si en vez de un 2 tuvieras un 3, tendrías tanto 5+6 = 11 como 8+3=11.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:combinacion numerica

Publicado por JuanC (1053 intervenciones) el 01/08/2008 21:21:50
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinacion numerica

Publicado por Armando Montes (240 intervenciones) el 02/08/2008 16:05:43
En este link tengo una plantilla para hacer lo que necesitas, suerte
http://www.geocities.com/excelmx/Facturacion.xls
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar