Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
416to420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
416to420
416to420
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA - Daten nach Häufigkeiten und Klassen

VBA - Daten nach Häufigkeiten und Klassen
Jan
Liebes Forum,
ich muss eine Montecarlo Simulation machen und hab daher ne ganze Masse Zufallszahlen mit denen ich dann weiterrechne...
Nun will ich gar nicht diese Ergebnisse mir anzeigen lassen, sondern gleich in Klassen einteilen lassen und daraus dann ein Histogramm zaubern (um Speicherplatz zu sparen und die Berechnung schneller zu machen).
Kann mir jemand helfen, wie der entsprechende "Häufigkeit(Daten;Klassen)" - Befehl in VBA wäre?
Vielen, vielen Dank für Eure Antworten und Grüße,
Jan
AW: VBA - Daten nach Häufigkeiten und Klassen
ChrisL
Hi Jan
Falls ich dich richtig verstehe...
Application.WorksheetFunction.CountIf(...)
Funktioniert gleich wie die Tabellenfunktion ZÄHLENWENN.
Gruss
Chris
AW: VBA - Daten nach Häufigkeiten und Klassen
Jan
Hi Chris,
mist, da hab ich mich aber auch dumm ausgedrückt. Ich will mir ja eigentlich nicht die Daten anzeigen lassen, bei dem Befehl muss man ja was mit "range" machen... Gibt es denn keine Möglichkeit, sich die Daten zu klassifizieren zu lassen ohne die Daten auszuspucken?
(Ich hab 10.000 Zahlen, die will ich gar nicht sehen...)
Trotzdem vielen Dank für die schnelle Antwort,
Jan
AW: VBA - Daten nach Häufigkeiten und Klassen
ChrisL
Hi Jan
In welcher Form liegen denn die Daten vor?
Vielleicht kannst du mal ein konkretes Beispiel hochladen (Datensatz) und das gewünschte Resultat ebenfalls konkret darstellen.
Gruss
Chris
Anzeige
AW: VBA - Daten nach Häufigkeiten und Klassen
Jan
Hi Chris,
ja, klar, kein Problem, unten ist der Code zu meinen ZVs und der Formel, die ich benutze.
Da ich 10.000 Iterations brauche (damit das Ergebnis vernünftig wird) ist die Datenmenge sehr groß, daher will ich die mir nicht anzeigen lassen. Ich will nur die Häufigkeit wissen, wie viele Ergebnisse in bestimmten Bereichen vorkommen (also z.B. 500 Stück von -1 bis 0 und 200 Stück von 0 bis +1 etc., damit ich dann eine Verteilung darstellen kann.

Sub MonteCarlo()
Dim Iteration As Long, i As Long
Dim Q As String, Y As Double, K As Double
Iteration = Range("C3").Value
ReDim TP(Iteration) As Double
K = Range("C7").Value
Y = Rnd
For i = 1 To Iteration:        Cells(12, 3) = i
Q = Application.NormSInv(Rnd)
Cells(9, 3) = Q
TP(i) = Sqr(K) * Y + Sqr(1 - K) * Q
Cells(6, 3) = Y
Cells(11, 3) = TP(i)
Next i
End Sub

--------------------------------------------------------------------------------------
Im Internet habe ich da folgendes Programm gefunden, geht in die richtige Richtung, ich kann es aber nicht auf meine Zwecke umprogrammieren (den Häufigkeiten feste Bereiche zum Beispiel zuordnen...)

Sub Hist(n As Variant, M As Long, Start As Double, Right As Double, arr() As Double)
Dim i As Long, j As Long, Find As Long
Dim Length As Double
ReDim breaks(M) As Single
ReDim freq(M) As Single
For i = 1 To M
freq(i) = 0
Next i
Length = (Right - Start) / M
For i = 1 To M
breaks(i) = Start + Length * i
Next i
For i = 1 To n
If (arr(i) <= breaks(1)) Then freq(1) = freq(1) + 1
If (arr(i) >= breaks(M - 1)) Then freq(M) = freq(M) + 1
For j = 2 To M - 1
If (arr(i) > breaks(j - 1) And arr(i) <= breaks(j)) Then freq(j) = freq(j) + 1
Next j
Next i
For i = 1 To M
Cells(i + 1, 9) = breaks(i)
Cells(i + 1, 10) = freq(i)
Next i
End Sub

Anzeige
AW: VBA - Daten nach Häufigkeiten und Klassen
ChrisL
Hi Jan
Um ehrlich zu sein übersteigt die Berechnung meine mathematischen Fähigkeiten und vielleicht habe ich mich mit dem Beitrag leicht übernommen.
Erst jetzt ist mir auch klar geworden, dass eine Monte Carlo Simulation nicht direkt mit Formel 1 zu tun haben muss und dass die Daten per Zufallsprinzip erzeugt werden. :-)
Vielleicht kann ich aber trotzdem helfen... als Ansatz

Sub test()
Dim i As Integer
For i = 1 To 1000
Select Case Rnd * 2
Case Is < 1: Range("A1") = Range("A1") + 1
Case Is > 1: Range("A2") = Range("A2") + 1
End Select
Next i
End Sub

Das Ergebnis also als "Case" definieren und die Bereiche (im Beispiel 0-1 und 1-2) einzeln auswerten. Im Monte Carlo Makro ist mir aber nicht klar, welche Variable eigentlich das Ergebnis darstellt.
Hoffentlich hilft es.
Gruss
Chris
Anzeige
AW: VBA - Daten nach Häufigkeiten und Klassen
28.04.2004 16:42:34
Jan
Hi Chris,
vielen Dank, es funktioniert!!! Hab einfach Deinen Code ab Select... in meine Routine integriert und es funzt fabelhaft.
Vielen Dank und Grüße,
Jan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige