ich soll für die Berechnung eines Konfidenzintervalls ein Resampling (n=1000) einer bestehenden prozentualen Verteilung von 19 Stichproben durchführen. Wie das Resampling funktioniert kann ich mir gerade noch so herleiten. Nun soll ich aber sowohl das ganze Resampling per VBA-Makro durchführen lassen, als auch das Ergebnis des jeweiligen Resamplings, d. h. die Summe der jeweiligen Prozentsätze, per VBA-Makro in eine Liste in ein neues Tabellenblatt mit fortlaufender Zeilennummer (von 1 bis 1000) übertragen. Ich habe schon ein wenig hin und her probiert, aber es ist nichts (sinnvolles) dabei herausgekommen.
Daher meine Frage: Wie könnte bzw. sollte ein entsprechendes Makro aussehen?
Für Vorschläge bin ich sehr dankbar. Zur besseren Übersicht habe ich ein Beispieldatei angehängt.
Private Sub cbTuwat_Click() Dim Z As Long Dim S As Long Dim AnzZ As Long Dim Anzahl As Long Dim Summe As Double Dim Liste As Variant Dim Ausgabe() As Variant
Anzahl = Range("Anzahl") Liste = Range("Liste") AnzZ = UBound(Liste, 1) ReDim Ausgabe(1 To AnzZ + 2, 1 To Anzahl) Range("Ausgabe").CurrentRegion.ClearContents
For S = 1 To Anzahl Ausgabe(1, S) = "No " & Format(S, "#,##0") Summe = 0 For Z = 1 To AnzZ Ausgabe(Z + 1, S) = Liste(WorksheetFunction.RandBetween(1, AnzZ), 1) If IsNumeric(Ausgabe(Z + 1, S)) Then Summe = Summe + Ausgabe(Z + 1, S) End If Next Z Ausgabe(AnzZ + 2, S) = Summe Next S Range("Ausgabe").Resize(AnzZ + 2, Anzahl).Value = Ausgabe End Sub
Da ich in Makros ungern mit festen Adressen arbeite, benötigt das Makro im Arbeitsblatt drei Namen:
1. Einen benannten Bereich "Liste" in der die zu nutzenden Wahrscheinlichkeiten stehen. 2. Eine benannte Zelle "Anzahl" mit der Anzahl der Test. 3. Eine benannte Zelle "Ausgabe". Ab hier wird die Ausgabe eingetragen. Vohandene Werte werden gnadenlos überschrieben. Da ich zu Beginn des Makro alte Daten über CurrentRegion lösche, sollte direkt über, unter oder neben dem Bereich keine Einträge erfolgen.
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.
28.03.2021, 18:24 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2021, 19:00 von Lars123.)
Vielen Dank @Ego! Das sieht super aus und funktioniert wie gedacht. Ich als Laie habe aber noch ein paar Fragen:
1. Ist es möglich die Summe der Prozentsätze eine Zeile nach unten (Zeile 22) zu verschieben? 2. Kann man außerdem noch (in einer weiteren Zeile darunter, d. h. Zeile 23) den gewichteten Mittelwert der jeweiligen Prozentsätze berechnen? 3. Kann man die Ausgabe der "Resamples" auch auf ein anderes Tabellenblatt verschieben? 4. Wie ist es, wenn man mehr als einen Datensatz mit 19 Prozentsätzen hat. Kann man auch mehrere Listen als Quelle auswählen und sich daraus die entsprechenden Parameter berechnen lassen?
das Forum sollte Hilfe zur Selbsthilfe und keine ausgefeilte Lösungen geben. Du hast geschrieben :
Zitat:Nun soll ich aber ... per VBA-Makro durchführen lassen, ... Ich habe schon ein wenig hin und her probiert...
Für mich heißt es, dass du schon Erfahrung in Programmierung hast oder haben solltest. Dann melde dich wenn du an einer Stelle Probleme beim anpassen hast und beschreibe auch deine Versuche.
zu 3.
Wenn du die benannte Zelle Ausgabe in ein anderes Blatt verschiebst, solltest du im Makro die beiden "Range("Ausgabe")" durch "ThisWorkbook.Names("Ausgabe").RefersToRange" ersetzen.
zu 4.
Bei mehr Prozentsätzen kannst den benannten Bereich "Liste" einfach verlängern
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 • Lars123