Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array in Zufallsreihenfolge (Randomisieren)

Forumthread: Array in Zufallsreihenfolge (Randomisieren)

Array in Zufallsreihenfolge (Randomisieren)
14.02.2005 14:13:28
Matthias
Hallo Herberaner,
ich suche nach einem möglichst effektiven Algorithmus (mögl. VBA) zum
Randomisieren von Arraywerten.
Kann mir jemand von Euch auf die Sprünge helfen?
merci
matthias
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array in Zufallsreihenfolge (Randomisieren)
Ulf
Willst du die Werte zufällig erzeugen oder die Ausgabe der Werte zufällig?
Ulf
Randomisieren -> Reihenfolge verwürfeln : )
Matthias
Hallo Ulf,
Wie mann Zufallswerte generiert ist mir geläufig : )
Das Array beinhaltet keine Zufallswerte sondern normalverteilte Messwerte.
Diese sollen nun unverändert vom Wert in eine Zufallsreihenfolge verwürfelt werden.
Wie geht dat?
gruß
matthias
Anzeige
AW: Randomisieren -> Reihenfolge verwürfeln : )
Ulf
Wenns ein eindimensionaler Array ist, schaufle die Werte in einen zweidimensionalen um,
deren zweite Dimension Zufallszahlen sind und sortier den Array nach diesen Zufallszahlen.
Der Umweg über eine Tabelle dürfte ggf. etwas performanter sein.
Ulf
AW: Array in Zufallsreihenfolge (Randomisieren)
14.02.2005 14:43:14
paulst
hallo,
ich weis nicht, ob es das richtige ist aber versuch daoch mal folgendes.
Erzeuge zuerst ein Permutation (d.h. zahlen ohne Wiederholungen) und vertausche dann deine Einträge entsprechend der Positionsangaben.
Eine Permutation erhält man folgendermaßen

Sub zufall()
Dim rng As Range, rnall As Range
Dim irandomize As Integer
Set rngall = Range("A1:A6")
Randomize
rngall.ClearContents
For Each rng In rngall.Cells
irandomize = Int((6 * Rnd) + 1)
Do Until WorksheetFunction.CountIf(rngall, irandomize) = 0
irandomize = Int((6 * Rnd) + 1)
Loop
rng.Value = irandomize
Next rng
End Sub

(Code stammt aus dem forum und nicht von mir. Funktioniert aber)
Anzeige
AW: Array in Zufallsreihenfolge (Randomisieren)
Matthias
Die Mischung machts!
Danke Ulf, Danke Paul
Die Kombination von beidem hat mich zum Ziel gebracht!
Permutationen? - Da musste ich damals Kreide holen : )
gruß
matthias
;
Anzeige

Infobox / Tutorial

Array in Zufallsreihenfolge randomisieren


Schritt-für-Schritt-Anleitung

Um ein Array in Excel in zufälliger Reihenfolge anzuzeigen, kannst du die folgenden Schritte befolgen. Diese Methode nutzt VBA, um die Werte zu randomisieren.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject“ klickst und „Einfügen“ > „Modul“ wählst.
  3. Kopiere den folgenden Code in das Modul:

    Sub zufall()
       Dim rng As Range, rngall As Range
       Dim irandomize As Integer
       Set rngall = Range("A1:A6") ' Bereich anpassen, falls notwendig
       Randomize
       rngall.ClearContents
       For Each rng In rngall.Cells
           irandomize = Int((6 * Rnd) + 1)
           Do Until WorksheetFunction.CountIf(rngall, irandomize) = 0
               irandomize = Int((6 * Rnd) + 1)
           Loop
           rng.Value = irandomize
       Next rng
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf „Ausführen“ klickst.

Jetzt hast du deine Werte in einer zufälligen Reihenfolge!


Häufige Fehler und Lösungen

  • Fehler: Der Bereich wird nicht randomisiert.
    Lösung: Stelle sicher, dass der in Set rngall = Range("A1:A6") angegebene Bereich korrekt ist und tatsächlich Werte enthält.

  • Fehler: Makro läuft nicht.
    Lösung: Überprüfe, ob Makros in deinen Excel-Einstellungen aktiviert sind. Gehe zu „Datei“ > „Optionen“ > „Trust Center“ und aktiviere Makros.


Alternative Methoden

Für diejenigen, die keine VBA-Lösung verwenden möchten, gibt es auch andere Möglichkeiten, die Excel-Zeilen zu randomisieren:

  1. Zufallszahlen in einer Hilfsspalte:
    Füge neben deinen Daten eine Spalte hinzu und verwende die Formel =RAND(), um eine zufällige Zahl zu generieren. Sortiere dann deine Daten nach dieser Spalte.

  2. Einsatz von Excel-Funktionen:
    Du kannst auch die Funktion SORTIEREN() in Excel 365 nutzen, um eine zufällige Reihenfolge zu erzeugen:

    =SORTIEREN(A1:A6;ZUFALLSBEREICH(1;100))

Praktische Beispiele

Angenommen, du hast folgende Werte in den Zellen A1 bis A6:

A
10
20
30
40
50
60

Nach Ausführung des VBA-Codes oder der Sortiermethode könnte das Ergebnis in zufälliger Reihenfolge folgendermaßen aussehen:

A
30
10
50
20
60
40

Tipps für Profis

  • Benutze Arrays effizient: Wenn du mit größeren Datenmengen arbeitest, überlege, ob du mehrdimensionale Arrays oder Collections verwendest, um die Performanz zu erhöhen.
  • Kombiniere Methoden: Du kannst die VBA-Lösung mit Excel-Funktionen kombinieren, um noch flexiblere Randomisierungen zu erreichen.
  • Testlauf durchführen: Teste dein Makro mit unterschiedlichen Datenmengen, um sicherzustellen, dass es unter verschiedenen Bedingungen funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich die Größe des Arrays anpassen?
Ändere einfach den Bereich in der Zeile Set rngall = Range("A1:A6") auf die gewünschte Größe.

2. Funktioniert das auch in Excel Online?
VBA wird in Excel Online nicht unterstützt. Für eine Online-Lösung musst du die Funktion mit Zufallszahlen und Sortierung verwenden.

3. Was, wenn ich Duplikate in meinem Array habe?
Die vorgeschlagene Methode berücksichtigt keine Duplikate. Wenn Duplikate vorhanden sind, kann die Zufallsverteilung ungleichmäßig sein. Du könntest eine zusätzliche Logik einbauen, um dies zu handhaben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige