MS Excel: Eindeutiger Zufallszahlengenerator innerhalb eines Bereichs

27776

Ich habe nach einer ähnlichen Frage gesucht, aber keine gefunden.

Ich möchte 10 Gruppen aus Zahlen von 1 bis 60 (einschließlich beider) generieren, wobei jede Gruppe zufällige und sich nicht wiederholende Zahlen enthält. Wie kann ich das in Excel machen?

0
Diese können hilfreich sein: http://stackoverflow.com/q/5753063/657668 http://superuser.com/q/277386/76571 Excellll vor 10 Jahren 0

2 Antworten auf die Frage

1
nixda

Wie man es benutzt

  1. Excel & VBA-Editor öffnen ( Alt+ F11)
  2. Geben Sie den Code unten ein Sheet1
  3. Gehen Sie zurück zu Excel und wählen Sie den gewünschten Bereich aus, der mit zufälligen und sich nicht wiederholenden Zahlen gefüllt wird
  4. Makro ausführen ( Alt+ F8)

Sub randomNumbers() Low = Application.InputBox("Enter first valid value", Type:=1) High = Application.InputBox("Enter last valid value", Type:=1) Selection.Clear For Each cell In Selection.Cells If WorksheetFunction.CountA(Selection) = (High - Low + 1) Then Exit For Do rndNumber = Int((High - Low + 1) * Rnd() + Low) Loop Until Selection.Cells.Find(rndNumber, LookIn:=xlValues, lookat:=xlWhole) Is Nothing cell.Value = rndNumber Next End Sub 

Excel-Datei zum Prüfen

Ich liebe diese kleinen und einfachen Lösungen so sehr

Möglicherweise ist dies nur mit Excel-Funktionen möglich: `= RANDBETWEEN (1,60)` und möglicherweise eine Array-Funktion? Aber ich habe keine Ahnung, wie ich nach Duplikaten suchen soll. nixda vor 10 Jahren 0
http://superuser.com/q/277386/76571 Excellll vor 10 Jahren 1
Nun, wie Sie bereits in den Kommentaren erwähnt haben, gibt es wegen "MOD" einen kleinen Nachteil. Aber es ist trotzdem eine gute Lösung. nixda vor 10 Jahren 0
Ich habe die oben genannten Schritte ausprobiert, aber während der Ausführung werden 9 Zellen nicht gefüllt und dann stürzt sie ab. vor 10 Jahren 0
Ich habe 6 x 10 Zellen (Zeilen oder Spalten) ausgewählt, wobei mein erster Wert 1 und der Endwert 60 ist. A1 bis F10 vor 10 Jahren 0
Ihre Arbeitsmappe zeigt eine fehlerlose Ausführung, aber ich habe genau die gleichen Schritte befolgt, die Sie von Ihnen angegeben haben. Welche Änderungen haben Sie vorgenommen? vor 10 Jahren 0
Sie können unter meinem Beitrag auf "vor x Stunde bearbeitet" klicken, um einen Verlauf anzuzeigen. Ich habe `Selection.Cells.Find (rndNumber)` in `Selection.Cells.Find (rndNumber, LookIn: = xlValues, lookat: = xlWhole)` geändert. Ich denke, jetzt funktioniert alles für dich? nixda vor 10 Jahren 0
Vielen Dank! Könnten Sie bitte Links oder Bücher vorschlagen, in denen ich VBA-Scripting für Excel direkt aus den Grundlagen lernen kann? Ich will es lernen, weiß aber nicht wo ich anfangen soll. ' vor 10 Jahren 0
Starten Sie [hier] (http://msdn.microsoft.com/de-de/library/office/ee814737 (v = office.14) .aspx), um eine Anleitung für Anfänger zu erhalten. Verwenden Sie [this] (http://www.java2s.com/Code/VBA-Excel-Access-Word/CatalogVBA-Excel-Access-Word.htm), wenn Sie weitere Informationen zu einer bestimmten Funktion benötigen. nixda vor 10 Jahren 0
1
Grubbis

Ich dachte, ich hätte eine Antwort, aber dies war eine Sackgasse (aber ziemlich lustig) und ich weiß nicht, wie ich sie entfernen kann. Ich muss Bingoblätter mit zufälligen Einstellungen erstellen.

Machen Sie eine Spalte A4: A63 mit den Zahlen 1 bis 60. Geben Sie eine ziemlich große Primzahl ein, die weniger als 60 Zellen B1 ist. Zum Beispiel '47 '.

In B2 eingeben

= RANDBETWEEN (1; 59)

In den Zeilen B4: B63 füllen Sie mit

=MOD(((A4+B$2)*B$1);60)+1  =MOD(((A5+B$2)*B$1);60)+1  ... =MOD(((A63+B$2)*B$1);60)+1  

Dies führt zu einer ziemlich zufälligen Sequenz. B $ 2 verschiebt nur die Sequenz.