für die Erstellung einer wissenschaftlichen Arbeit benötige ich etwas Hilfe / ein paar Tipps zur Lösung eines "technischen" Problems.
Und zwar geht es darum, dass ich ein Portfolio aus 5 Aktien zusammenstelle, wobei der jeweilige Portfolioanteil der einzelnen Aktien variieren soll.
Eine Aktie soll immer mindestens 10% Anteil haben und höchstens 60% dann logischerweise. Der Portfolioanteil der einzelnen Aktien soll in 10%-Schritten verändert werden.
Zusammen dürfen die einzelnen Anteile natürlich auch 100% nicht übersteigen. Bitte schaut einmal das angehängte Bild an, ich denke das erklärt vieles.
Ich habe schon von Hand angefangen, die Möglichkeiten aufzuschreiben (siehe Bild), doch dann ist mir schnell klar geworden, dass es 1. ziemlich viel Arbeit wäre, was an sich nicht so schlimm ist, aber zweitens eben auch sehr unübersichtlich, was schnell zu Fehlern meinerseits führen könnte.
Am Ende müsste ich dann noch mit den jeweiligen Kombinationen weiterrechnen können, weshalb es vielleicht doch nicht so eine gute Idee von mir gewesen ist, mehrere Unternehmen/Aktien in die gleiche Zelle zu schreiben?!
Hat jemand evtl. eine bessere Idee, wie man das Problem lösen könnte? Ich wäre über jeden Tipp dankbar!
A) Aufbau Auf jeden Fall in den Überschriften die Namen und in der Matrix die Prozentzahlen für Version und Namen eintragen.
B) Kombinationen
Falls sich in Zukunft die Schrittweite der unterschiedlichen Anteile ändern können, würde ich eine VBA-Lösung empfehlen.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • Hannes
in der Anlage einmal eine flexible Berechnung der Kombinationen. Der Schritt darf zur Zeit nicht kleiner als (Max-Min)/100 sein.
Code:
Option Explicit
Dim intAnz As Integer
Dim lngAusgabe As Long
Dim dblGesAkt As Double
Dim dblGesMin As Double
Dim dblGesMax As Double
Dim varListe() As Variant
Dim varAusgabe() As Variant
Dim rngAusgabe As Range
Private Sub cbTuwat_Click()
Dim intSpalte As Integer
Dim blnGueltig As Boolean
lngAusgabe = 0
varListe = ThisWorkbook.Names("Liste").RefersToRange.Value
Set rngAusgabe = ThisWorkbook.Names("Ausgabe").RefersToRange
intAnz = UBound(varListe, 2) - 2
ReDim varAusgabe(1 To 1, 1 To intAnz)
dblGesMin = varListe(1, intAnz + 2) - 0.0000001
dblGesMax = varListe(2, intAnz + 2) + 0.0000001
blnGueltig = True
For intSpalte = 2 To intAnz + 1
If varListe(1, intSpalte) > varListe(2, intSpalte) Then blnGueltig = False
If varListe(3, intSpalte) <= 0.000001 Then blnGueltig = False
If (varListe(2, intSpalte) - varListe(1, intSpalte)) / varListe(3, intSpalte) > 100 Then blnGueltig = False
Next intSpalte
If blnGueltig Then
Call Recursiv(1)
MsgBox lngAusgabe & " Kombinationen"
Else
MsgBox "Eine Bedingung ungültig."
End If
End Sub
Sub Recursiv(ByVal intAkt As Integer)
Dim dblAkt As Double
dblAkt = varListe(1, intAkt + 1)
Do While dblAkt < varListe(2, intAkt + 1) + 0.000001
dblGesAkt = dblGesAkt + dblAkt
varAusgabe(1, intAkt) = dblAkt
If dblGesAkt <= dblGesMax Then
If intAkt = intAnz Then
If dblGesAkt >= dblGesMin Then
lngAusgabe = lngAusgabe + 1
rngAusgabe.Offset(lngAusgabe - 1, 0) = lngAusgabe
rngAusgabe.Offset(lngAusgabe - 1, 1).Resize(1, intAnz) = varAusgabe
End If
Else
Call Recursiv(intAkt + 1)
End If
End If
dblGesAkt = dblGesAkt - dblAkt
dblAkt = dblAkt + varListe(3, intAkt + 1)
Loop
End Sub
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • Hannes
13.04.2018, 14:05 (Dieser Beitrag wurde zuletzt bearbeitet: 13.04.2018, 14:08 von Ego.)
Hallo LCohen,
zu:
Zitat:(Elex hat sich das Beispiel nicht angeschaut, Bosko schon).
Die Tabelle müsste man also nun weiterstricken für statt alle 5 Aktien nur deren 4, 3 und 2.
Elex die Aufgabe doch genau richtig gelöst.
Zitat:Eine Aktie soll immer mindestens 10% Anteil haben und höchstens 60% dann logischerweise.
Du hast dich durch den Aufbau des Beispiels verwirren lassen.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Zitat: (Elex hat sich das Beispiel nicht angeschaut).
Nö Nö hab ich. :19:
Wie immer bleibt ein wenig Raum für Interpretation. Laut Beispiel geht es für mich immer um alle 5 Aktien. Nur stehen da halt mehrere in einer Zelle.