Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mehrere Ergebnisse berechnen mit einer Formel und mehreren Ausgangswerten
#11
die Poisson-Verteilung benötigt 2 Werte: x und m (Mittelwert)

Im Beispiel ist m willkürlich auf "5" gesetzt, kann aber leicht durch eine Schleife ersetzt werden.

Verteilungen werden mit "false" oder "true" nicht / kumuliert gerechnet. Es war mir nicht klar, was benötigt wird.

Facit: mit 2 Schleifen für x und m läßt sich alles ohne Hilfstabellen berechnen.
Antworten Top
#12
(26.06.2019, 13:15)Fennek schrieb: die Poisson-Verteilung benötigt 2 Werte: x und m (Mittelwert)

Im Beispiel ist m willkürlich auf "5" gesetzt, kann aber leicht durch eine Schleife ersetzt werden.

Verteilungen werden mit "false" oder "true" nicht / kumuliert gerechnet. Es war mir nicht klar, was benötigt wird.

Facit: mit 2 Schleifen für x und m läßt sich alles ohne Hilfstabellen berechnen.

Ich habe ja eine Poisson-Matrix, müsste ich dann nicht 

For x = 1 To 7
    Cells(x, 1) = WorksheetFunction.Poisson_Dist(x, m, False)
    Cells(1, x) = WorksheetFunction.Poisson_Dist(x, m, False)
Next x


stattdessen schreiben oder verstehe ich den Code nicht? Andernfalls müsste ich in meinen ersten beiden Spalten jeweils Werte von 1 bis 7 stehen haben müssen (bei Cells (x,1) und Cells (x,2))?

Und m müsste ja für zwei benachbarte Spalten "runterlaufen". 
Mit 

For m = 1 To 25386
    Cells(m, 1) = WorksheetFunction.Poisson_Dist(x, m, False)
    Cells(m, 2) = WorksheetFunction.Poisson_Dist(x, m, False)
Next m

komme ich ja nicht weiter oder?

Werden die Ergebnisse bei der Funktion Poisson_Dist denn miteinander multipliziert? In meiner Matrix werden ja für jedes m-Paar die Verteilungen multipliziert, also z.B. wenn in der ersten Zeile der beiden Spalten mit den Mittelwerte m1=1.3 m2=1.8 dann Poisson(x,1.3,False)*Poisson(x,1.8,False) wobei die Multiplikation für jede Kombination von x durchgeführt werden soll. Aus der gesamten Verteilung muss ja dann jeweils für ein x-Übergewicht in der linken Spalte, ein x-Gleichgewicht und ein x-Übergewicht in der obersten Zeile der Matrix  die Summe gebildet werden, sodass schlussendlich drei Ergebnisse ausgespuckt werden die natürlich kumuliert 1 ergeben.

Diese drei Ergebnisse sollen dann für jede Zeile der beiden Spalten mit den Mittelwerten in drei benachbarten Zellen angezeigt werden. Impliziert das dein Code bereits? Ich blick einfach nicht durch
Antworten Top
#13
Hallo,

ich habe mit viel-zu-viel Worten gezeigt, wie einfach eine Poisson-Verteilung mit VBA erstellt werden kann. ABER: Aus dem Ausgangspost habe ich dein Ziel nicht verstanden. Das Beispiel mit der Addition 3 Werte ist für mich nicht verständlich.

Aber mit VBA 3 Poisson-Wahrscheinlichkeiten zu ermitteln und zu addieren, ...

mfg
Antworten Top
#14
(26.06.2019, 16:03)Fennek schrieb: Hallo,

ich habe mit viel-zu-viel Worten gezeigt, wie einfach eine Poisson-Verteilung mit VBA erstellt werden kann. ABER: Aus dem Ausgangspost habe ich dein Ziel nicht verstanden. Das Beispiel mit der Addition 3 Werte ist für mich nicht verständlich.

Aber mit VBA 3 Poisson-Wahrscheinlichkeiten zu ermitteln und zu addieren, ...

mfg
Ich habe nochmal eine funktionierende Beispieldatei hochgeladen. Meine m-Werte stehen in den Spalten A:B, meine Poisson-Matrix beinhaltet in F2:F7 und 1G:1L die x-Werte. Innerhalb der Matrix G2:L7 werden die Werte von Poisson für jedes x multipliziert. Anschließend wird die hellgrüne Fläche in G9 aufsummiert, die orangene Fläche in G10 und die dunkelgrüne Fläche in I9. 
Das erst m-Wertepaar in A2:B2 liefert dann das Ergebnis in G9:I9 was in den Spalten C:E dann für jede Zeile eingetragen werden soll.


Angehängte Dateien
.xlsx   Beispiel.xlsx (Größe: 30,96 KB / Downloads: 2)
Antworten Top
#15
Hallo,

ohne Wissen, was das zeigen soll:

Der Code iteriert alle Werte der Spalten A:B in die Tabelle "G2:L7":

Code:
Sub F_en()
Dim rng As Range
Set rng = Range("G2:L7")

For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    rng.Replace "$" & i - 1, "$" & i
    '<<<<<<< Auswertung >>>>>>>>
Next i

Set rng = Nothing
End Sub

mfg
Antworten Top
#16
(26.06.2019, 18:52)Fennek schrieb: Hallo,

ohne Wissen, was das zeigen soll:

Der Code iteriert alle Werte der Spalten A:B in die Tabelle "G2:L7":

Code:
Sub F_en()
Dim rng As Range
Set rng = Range("G2:L7")

For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
   rng.Replace "$" & i - 1, "$" & i
   '<<<<<<< Auswertung >>>>>>>>
Next i

Set rng = Nothing
End Sub

mfg
Vielen Dank!!! Sehr nett. Es ist verblüffend wie elegant man das Problem lösen kann, so elegant, dass ich ich mich über einige Punkte wundere. Ich möchte ja dazu lernen: Woher weißt ich denn das der Code beide Werte aus Spalte A und Spalte B in der Matrix ersetzt? For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row liest es sich für mich als ob nur in Spalte 1 iteriert werden würde?
Außerdem ist die Funktion Replace für mich in dieser Form schleierhaft: Warum wird hier "$"& verwendet...das man i-1 durch i ersetzen soll klingt natürlich logisch aber was sagt mir "$"&?
Antworten Top
#17
Moin,

Cells(Rows.Count, 1).End(xlUp).Row

Damit wird "nur" in Spalte A geschaut, wie viele Zeilen zu bearbeiten sind. Bei A ist man anscheinend auf der sicheren Seite. Man könnte auch in den Spalten von G bis L schauen, wo da am meisten steht …

In Deinen Formeln verwendest Du absolute Bezüge für die Adressierung, also z.B. $B$2. Die Zahl 2 kommt aber auch an anderer Stelle als Parameter vor. Wenn DU "nur" die 2 austauschst, würde sowohl die Zeilennummer als auch der Parameter geändert.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
Hallo,

der Code ist einfacher zu verstehen, wenn man mit Alt-F11 den VBE öffnet, den Cursor in den Code stellt und ihn dann im Einzelschrittmodus Taste-F8 ausführt.

Dann kann man im Sheet die Wirkung in der Tabelle G2:J7 sehen.

Damit der Code ein zweites Mal läuft, müssen die Bezüge in der Tabell auf $2 per Hand "suchen - ersetzen" zurück gesetzt werden.

mfg
Antworten Top
#19
Vielen Dank für eure Hilfe!
Ich frage mich allerdings nun wie ich die jeweiligen Ergebnisse in die Spalten C:E für jede einzelne Zeile bekomme?

Wenn ich zunächst 

Dim rngres As Range
Set rngres = Range("G9:I9") schreibe um die Ergebnisse in die Variable zu fassen

und dann in die For-Schleife

rngres.Copy Destination:=Cells(i, 3)

integriere, wird leider immer der aktuellste Wert in ALLE Zeilen kopiert. Natürlich soll für jede Zeile, sprich für jeden Wert aus Spalte A:B, das entsprechende Ergebnis in den Spalten C:E in derselben Zeile "protokolliert" werden.

Was muss ich noch beachten?
Antworten Top
#20
teste mal mit:

Code:
Sub F_en()
Dim rng As Range
Set rng = Range("G2:L7")

For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    rng.Replace "$" & i - 1, "$" & i
    Application.Calculate
    Range("G9:I9").Copy
        Cells(i - 1, 3).PasteSpecial xlValues
Next i

Set rng = Nothing
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste