Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1832to1836
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
Inhaltsverzeichnis

Zufallszahlen

Zufallszahlen
10.06.2021 07:00:31
Paul
Guten Morgen,
für ein schulprojekt wäre es ganz gut wenn Excel mir Zufallszahlen erstellen könnte .
wichtig das es mit bestimmten Bedingungen klappt deswegen weiß ich leider nicht weiter , kenne selber nur die Formel zufallsbereich.
Folgendes ist gegegeben
A1 = die Anzahl an Zufallszahlen die erstellt werden sollen
A2 = die kleinste Zahl die es sein darf
a3 = die höchste Zahl
a4 = alle Zahlen zusammen mit der Gesamtsumme müssen genau die Zahl erheben
und alles immer in ganzen zahlen.
geht das mit Excel überhaupt oder wie kann das gelöst werden. kenne mich leider nur mit dem Makro Rekorder aus .
ich sach schon mal danke für die Hilfe.
Grüße Paul

40
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
xl365: =RAND.UNIQ(A1;A2;A3)
10.06.2021 08:45:37
lupo1
... aus https://www.office-hilfe.com/support/threads/36909#RAND_UNIQ
Das Ergebnis der LAMBDA()-Funktion erzeugst Du mit F9 und vergleichst Du dann mit A4, bis es passt.
Achtung: Jede Zufallszahl hier nur einmal, kein Wiederholer. Wenn Du Wiederholer erlaubst, ist sie für Dich also zu streng.
AW: xl365: =RAND.UNIQ(A1;A2;A3)
10.06.2021 09:08:47
Paul
Hallo Lupo,
Ich habe die Formel bei mir mal in excel ausprobiert bekomme immer ein #name? als Fehler
AW: xl365: =RAND.UNIQ(A1;A2;A3)
10.06.2021 10:42:27
Daniel
Hi
Diese Lösung ist auch nur unter Excel 365 lauffähig.
Das wollte dir Lupo1 mit dem vorangestellten "xl365" im Betreff mitteilen.
Gruß Daniel
Anzeige
xl365: =ZUFALLSMATRIX(...)
10.06.2021 09:12:27
lupo1
... erlaubt dann auch Wdh. - bzw. kann solche systematisch dann nicht unterbinden.
ZUFALLSMATRIX wird auch in meiner LAMBDA-Funktion verwendet.
Wenn Du kein xl365 hast: Kaufen.
AW: xl365: =ZUFALLSMATRIX(...)
10.06.2021 09:15:57
Paul
Ok , aber muss doch auch möglich sein ohne einen Kauf einer neuen Office Version hier eine Lösung zu finden ?
siehe Excel-Online, anderer Ast
10.06.2021 09:41:22
lupo1
AW: siehe Excel-Online, anderer Ast
10.06.2021 09:45:51
Paul
Aber online excel hilft mir doch nicht in der offline Datei weiter
Man lädt die Offlinedatei dort hoch
10.06.2021 09:48:00
lupo1
... hast Du es überhaupt schon benutzt? Wenn nicht, dann sage das auch - und argumentiere nicht rum.
AW: Man lädt die Offlinedatei dort hoch
10.06.2021 10:13:12
Paul
Ich schaue mir das heute Abend zuhause mal an, danke erstmal
AW: Realisierung in XL2010 wäre reiner Zufall ...
10.06.2021 08:54:19
neopa
Hallo Paul,
... bzw. kann durch Deine 4. Bedingung (Vorgabe-Summe in A4) in Deiner Excelversion nicht mehr durch reine Zufallszahlen gemäß Deine ersten 3 Bedingungen realisiert werden.
Ich sehe momentan nur eine angepasste Lösungsnäherung, in dem man ab der 2. Zufallszahl die kleinste und/oder größte Zahl für die jeweils folgende Zufallszahl in Abhängigkeit der bis dahin bereits erreichten Zufallszahlsumme und der Vorgabe-Gesamtsumme in A4 durch eine Formel anpasst. Und dies auch nur dann, wenn dieser Wert in A4 mindestens A3+A1 groß ist und auf keinen Fall größer als: A3*A1- (A1-1)*A2 ist.
Gruß Werner
.. , - ...
Anzeige
AW: Realisierung in XL2010 wäre reiner Zufall ...
10.06.2021 09:11:07
Paul
Ok Werner hört sich ja komplex an , gibt es hier nicht irgendeine Form sonst übe VBA das zu lösen ?
AW: Realisierung in XL2010 wäre reiner Zufall ...
10.06.2021 09:13:57
Paul
Oder noch eine andere Idee ?
Wenn ich ein anderes excel hätte würde das mit der uniq Formel gehen ?
ZUFALLSMATRIX geht auch in ...
10.06.2021 09:17:00
lupo1
... Online-Excel (für jeden kostenlos erreichbar).
AW: ZUFALLSMATRIX geht auch in ...
10.06.2021 09:33:08
Paul
Ok das wusste ich auch nicht , aber bringt mich ja in meiner Datei dann leider nicht weiter
Bitte spezifiziere genauer!
10.06.2021 09:37:27
lupo1
Das mit den erlaubten oder nicht erlaubten Zufallsdopplern kommt von mir! Du hast dazu immer noch nichts geschrieben.
AW: Bitte spezifiziere genauer!
10.06.2021 09:43:54
Paul
Sorry , das hab ich überlesen .Also es ist so das auch doppelte Zahlen vorkommen dürfen .
Nur die Anzahl und die min und Max und die Gesamtsumme ist halt fix
Anzeige
Dann ZUFALLSMATRIX in XL Online
10.06.2021 09:45:43
lupo1
... und den Rest kriegst Du hin.
AW: VBA (mit sulprobil) auch in xl2010
10.06.2021 09:31:44
Paul
Ok da blicke ich nicht durch , schade
Das ist die Killerantwort schlechthin.
10.06.2021 09:38:06
lupo1
AW: Das ist die Killerantwort schlechthin.
10.06.2021 09:39:35
Paul
Naja ich verstehe halt noch nicht wirklich VBA, von daher muss ich mich da mal mit auseinander setzen . Aber das geht erst am Wochenende , daher kann ich den Code halt nicht bewerten
AW: Zufallszahlen
10.06.2021 09:41:31
Marco
Hallo Paul,
ich hab mal rumprobiert. Die Lösung ist nicht schön, aber scheint soweit zu funktionieren.
Ich erstelle ein Array in der Größe der benötigten Zahlen.
Dann wird das Array mit den erwünschten Zufallszahlen gefüllt.
Nun wird die Summe des Array mit der gewünschten Summe abgeglichen und ggf. per Zufall einzelne Zahlen angepasst.
Ist nicht das beste, aber hilft vielleicht.
Gruß
--- Makro ---

Option Explicit
Sub ZFM()
Dim AnzahlZahlen As Long
Dim KZahl As Long
Dim GZahl As Long
Dim SollSumme As Long
Dim AusgabeZeile As Long
Dim WS As Worksheet
Set WS = ActiveSheet
AnzahlZahlen = WS.Range("A1")
KZahl = WS.Range("A2")
GZahl = WS.Range("A3")
SollSumme = WS.Range("A4")
AusgabeZeile = 10
Dim M As Variant
Dim Mi As Long
Dim S As Long
Dim zMi As Long
ReDim M(AnzahlZahlen)
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For Mi = LBound(M) To UBound(M)
M(Mi) = Int(Application.WorksheetFunction.RandBetween(KZahl, GZahl))
Next Mi
S = Application.WorksheetFunction.Sum(M)
Do While S  SollSumme
If S  SollSumme Then
Do
zMi = Application.WorksheetFunction.RandBetween(LBound(M), UBound(M))
Loop While M(zMi) = KZahl
M(zMi) = M(zMi) - 1
End If
S = Application.WorksheetFunction.Sum(M)
Loop
'Ausgabe
For Mi = LBound(M) To UBound(M)
WS.Cells(AusgabeZeile + Mi, 1) = M(Mi)
Next Mi
Aufräumen:
Set WS = Nothing
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub

Anzeige
Bedenklich!
10.06.2021 09:49:33
lupo1
Macht man nicht!
AW: Bedenklich!
10.06.2021 09:52:35
Marco
Hallo Lupo,
ja ich weiß. Nur wenn er sonst nichts findet :(
Gruß
In aller Güte:
10.06.2021 09:55:45
lupo1
So schlecht ist Dein Ansatz gar nicht. Denn ein Mehrfachstarten bis zur passenden Summe könnte viel aufwändiger sein, als wenn man zufällige Zahlen in Deiner Ermittlung shiftet. Also: Sorry für meine Strenge. Dem TE wird es jedenfalls reichen.
AW: In aller Güte:
10.06.2021 10:13:59
Marco
Hallo Lupo,
du hattest ja auch Recht. Man sollte die Zufallszahlen nicht anpassen, bis es 'passt'.
Ich denke aber für das Schulprojekt dürfte es reichen. Ich denke nicht, dass es dort
wissenschaftlich streng zu geht :)
Kein Problem, ich lerne hier selber sehr sehr viel von euch allen :) DANKE dafür
Gruß
Anzeige
AW: In aller Güte:
10.06.2021 10:31:23
Paul
Moin vielen Dank , ich werde zuhause das ganze mal testen und heute Abend berichten , am Wochenende werde ich mich dann mal mit dem online excel beschäftigen
AW: Zufallszahlen
10.06.2021 20:11:01
Paul
Nabend, so habe den Code mal ausprobiert und in dem Tabellenblatt unter Code anzeigen dann eingefügt. ich habe seit 2 min, dass die Excel Datei nur lädt und sich dann mit keine Rückmeldung aufhängt
AW: Zufallszahlen
11.06.2021 11:27:30
Daniel
Hi Paul
hast du dir die anderen Lösungen auch schon mal angeschaut?
wenns Probleme gibt, ein Ergebnis zu finden, solltest du auch folgendes bedenken:
Zufallszahlen, die zwischen X und Y liegen, werden im Mittelwert mit sehr hoher Wahrscheinlichkeit einen Wert ergeben, der auch genau in der Mitte zwischen X und Y liegt. Je weiter weg ein Ergebnis von dieser liegt, um so weniger wahrscheinlich ist es, dh es wird dann durch Zufallszahlen seltener getroffen
Dividiere also A4 durch A3 und Vergleiche diesen Wert mit A2 und A3.
Er sollte möglichst in der Mitte zwischen beiden Werten liegen.
je mehr er sich dem Min oder Max annähert, um so unwahrscheinlicher wird ein ein zufälliges Ergebnis und um so mehr Versuche wirst du brauchen, wenn du auf echten Zufall setzte.
du brauchst dann also entweder von Hand nachbearbeitete Werte, oder du müsstest das Min oder das Max so anpassen, dass der Quotient aus Zielsumme und Anzahl wieder in der Mitte zwischen beiden liegt.
eine gewichtete Zufallsberechnung (mach Zufallszahlen, die zu 10% aus Werten zwischen 1 und 10, zu 20% aus werten zwischen 11 und 70 und zu 70% aus Werten zwischen 71 und 100 bestehen) gibt es in VBA als vorgefertigte Funktion nicht.
Gruß Daniel
Anzeige
AW: Zufallszahlen
11.06.2021 11:30:19
Paul
Ja habe mir mit klassischen Formeln jetzt was gebastelt und dann einen Makro drüber gelegt, klappt auch wunderbar .
Also vielen Dank euch allen, ist fast von jedem etwas dabei
AW: Zufallszahlen
11.06.2021 11:34:47
Daniel
hattest du dir meinen Lösungvorschlag mal angeschaut?
Gruß Daniel
AW: Zufallszahlen
11.06.2021 11:39:42
Paul
Ja genau das habe ich genommen und soweit angepasst mit Makro das es für das was ich machen möchte verändert.
AW: Zufallszahlen
11.06.2021 12:21:17
Daniel
wie wäre es dann mit einem kleinen Feedback und einem Dankeschön?
Mitnehmen und abhauen ohne Danke zu sagen ist nicht so die feine englische.
Gruß Daniel
AW: Zufallszahlen
11.06.2021 13:32:50
Paul
Hallo Daniel eine Antwort habe ich gestern schon kurz gegeben bzw. ein Dank heute Vormittag , nur halt nicht in jeder teilzeile
Anzeige
AW: Zufallszahlen
11.06.2021 13:49:58
Daniel
habe ich nicht gesehen.
Hänge sowas doch einfach direkt an den betreffenden Beitrag dran, in der Regel weiß man ja, welche Beiträge man geschrieben hat.
Wenn das irgendwo in einem anderen Strang steht, findet man das nicht unbedingt und dann weiß ich nicht, dass du das gemacht hast.
Gruß Daniel
Hier noch Formellösung für altes Excel
10.06.2021 10:31:53
lupo1
A1:A4: von Dir vorgegeben
C1[:C20]: =KÜRZEN(ZUFALLSZAHL()*(A$3-A$2+1)+$A$2) (für maximale Anzahl A1: 20, entspr. anpassen)
E1: =--(SUMME(C1:INDEX(C:C;A1))=A4) mit benDefFmt "Treffer";;
Nun so lange F9 drücken, bis "Treffer"!
Anzeige
AW: damit braucht man aber viel Geduld owT
10.06.2021 15:27:07
neopa
Gruß Werner
.. , - ...
Das stimmt
10.06.2021 21:46:40
lupo1
Man kann aber VBA so lange "Calculate" anstoßen (statt manuell F9) lassen, bis es klappt.
Oder man wählt die Daten etwas enger - dann klappt es auch recht schnell manuell.
AW: Zufallszahlen
10.06.2021 10:37:19
Daniel
Hi
Mal ein Ansatz:
1. in B2 die Formel: =Wenn(Zeile()&lt=$A$1;Zufallsbereich($A$2;$A$3);"")
Diese Formel soweit nach unten ziehen wie maximal Zufallszahlen geben kann.
2. in B1 die Formel: =A4-Summe(Bereich.Verschieben(B2;0;0;A1-1;1))
3. in C1 die Formel: =Wenn(und(B1&GT=A2;B1&ltA3);"i.O.";"Fehler")
4. wenn in C1 "i.O." steht, hast du eine Lösung die du die mit Kopieren und Inhalte Einfügen Werte an einer anderen Stelle sichern kannst.
Steht dort "Fehler", musst du F9 drücken um neue Zufallszahlen zu erzeugen und dies ggf wiederholen.
Punkt 4 könnte man dann per Code ausführen lassen:

dim i as long
Columns(5).ClearContents
For i = 1 to 10000
If Range("C1") = " i.O." then Exit for
Application.Calculate
Next
If i > 10000 then
Msgbox "keine Lösung gefunden", vbExclamation
Else
Msgbox " Ergebnis liegt vor"
With Range("B1"). Resize(Range("A1"). Value)
.offset(0, 3).value = .value
End with
End if
Das Makro kopiert zusätzlich win korrektes Ergebnis nach Spalte E
Gruß Daniel
Anzeige
Danke an alle es geht
11.06.2021 13:57:23
Paul
Super vielen Dank an alle habe eine kombinierte Lösung aus ein paar Kommentaren gemacht

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige