AW: Zielwert ermitteln
30.04.2009 14:26:34
David
Hallo Christian.
Als Lösungsansatz:
Sub kombi()
Dim wert(5), count, target
wert(1) = Cells(2, 1)
wert(2) = Cells(3, 1)
wert(3) = Cells(4, 1)
wert(4) = Cells(5, 1)
wert(5) = Cells(6, 1)
count = 1
target = Cells(2, 2)
For i = 0 To 1
For j = 0 To 1
For k = 0 To 1
For l = 0 To 1
For m = 0 To 1
If i + j + k + l + m > 1 Then
count = count + 1
ergebnis = wert(1) * i + wert(2) * j + wert(3) * k + wert(4) * l + wert( _
5) * m
If ergebnis = target Then
count2 = count2 + 1
Cells(count2, 12) = ergebnis
Cells(count2, 13) = i * wert(1)
Cells(count2, 13 + i) = j * wert(2)
Cells(count2, 13 + i + j) = k * wert(3)
Cells(count2, 13 + i + j + k) = l * wert(4)
Cells(count2, 13 + i + j + k + l) = m * wert(5)
If Cells(count2, 13 + i + j + k + l + m) = 0 Then Cells(count2, 13 + _
i + j + k + l + m).Clear
End If
End If
Next
Next
Next
Next
Next
End Sub
Die Werte stehen hier in A2:A6, das gesuchte Ergebnis in B2.
Das kann man natürlich noch weiter ausbauen, insbesondere hinsichtlich der Ergebnisausgabe und Fehlertoleranz etc. Mit "VBA gut" solltest du das hinbekommen.
Allerdings sehe ich keine Möglichkeit, das Variabel zu gestalten, d.h. die Anzahl der zu verarbeitenden Variablen muss manuell im Code angepasst werden - für jede Variable mehr eine For-Next-Schleife mehr. Damit stößt diese Variante recht schnell an ihre Grenzen, nicht zuletzt wegen der mit zunehmender Anzahl exponentiell steigenden Variationen, so dass die Berechnung dann wahrscheinlich Excel und/oder deinen PC in die Knie zwingt.
Rückmeldung wäre nett.
Gruß
David