Office: Zufallsgenerator

Helfe beim Thema Zufallsgenerator in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe eine Exceltabelle mit dem nachfolgenden Code in Bearbeitung: Option Explicit Sub x() Dim wsSrc As Worksheet ' die... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Patt, 12. Dezember 2010.

  1. Patt User

    Zufallsgenerator


    Hallo,

    ich habe eine Exceltabelle mit dem nachfolgenden Code in Bearbeitung:

    Code:
    Option Explicit
    
    Sub x()
       Dim wsSrc As Worksheet     ' die Quell-Tabelle
       Dim rngDst As Range        ' der 'Ziel-Bereich' = die Selektion
       Dim arZufall() As Long     ' Array mit allen Zeilennummern von 1 ... lngZeilen
       Dim lngZufall As Long      ' eine Zufallszahl zwischen 1 ... lngZeilen
       Dim lngZeilen As Long      ' Anzahl der Zeilen der Quell-Tabelle
       Dim intSpalten As Integer  ' Anzahlder zu kopierenden Spalten
       Dim i As Long              ' Zähler
       
       Randomize
       Set rngDst = Selection
       intSpalten = rngDst.Columns.Count
       Set wsSrc = Worksheets("Daten")
       lngZeilen = wsSrc.Cells(wsSrc.Rows.Count, 1).End(xlUp).Row
       ReDim arZufall(1 To lngZeilen)
       For i = 1 To lngZeilen
          arZufall(i) = i
       Next
       
       For i = 1 To rngDst.Rows.Count
          ' Zufallszahl zwischen 1 und lngZeilen generieren
          lngZufall = Int(lngZeilen * Rnd() + 1)
          ' Quellzeile ist die Zeile mit der Zeilennummer arZufall(lngZufall)
          wsSrc.Cells(arZufall(lngZufall), 1).Resize(, intSpalten).Copy rngDst.Cells(1).Offset(i -  _
    1)
          ' die letzte Zeilennummer auf die gerade gezogene Zeilennummer umkopieren
          arZufall(lngZufall) = arZufall(lngZeilen)
          ' und dann einfach die Arraygrösse erniedrigen
          lngZeilen = lngZeilen - 1
       Next
    End Sub
    
    
    
    Private Sub CommandButton1_Click()
    Call x
    End Sub
    
    In einem Datenblatt habe ich diverse Daten in den Spalten A bis E erfasst.

    Die o.g. Funktion fügt nun nach Drücken von Strg+S per Zufall eine Zeile aus dem o.g. Datenblatt an die markierte Stelle ein.
    Die Zufallsfunktion funktioniert hierbei leider nur Zeilenweise. Ich würde nun gerne wissen, wie ich nicht nur eine komplette Zeile auswählen lassen kann, sondern dass hierbei auch noch 2 einzelne Felder per Zufall ausgewählt werden und eingefügt werden. Ist irgendwie schwierig zu erklären.

    Bsp.
    Spalte A hat von Zeile 1 bis 3 folgende Werte:
    Hamburg
    Berlin
    München

    Werte von B:
    100
    200
    300

    Werte von C:
    16:00
    18:00
    20:00

    Werte von D:
    18:00
    20:00
    22:00

    Wenn ich nun Strg+S drücke wird in die zuvor markierten 4 Felder per Zufall eine aus dem zuvor genannten Zeilen ausgewählt und eingefügt.

    Also: Berlin - 200 - 18:00 - 20:00

    Wie muss der Code lauten, dass es bspw. Berlin - 100 - 16:00 - 22:00 auswählt.
    Also die erste Spalte ist fix und bei den restlichen wird innerhalb der Liste nochmal per Zufall ausgewählt.

    Hoffe ich habe mich einigermassen verständlich ausgedrückt.

    Danke!

    Grüße
    Patt
     
  2. Patt User
    Hi,

    keiner ne Lösung?

    Gruß
     
  3. Exl121150 Erfahrener User
    Hallo!

    Folgendes Makro müsste den ausgewählten Zielbereich (Selection) mittels der Daten des Quellbereiches (Blatt Daten) in zufälliger Reihenfolge befüllen.
    Code:
    Option Explicit
    
    Sub x()
       Dim wsSrc As Worksheet     ' die Quell-Tabelle
       Dim rngDst As Range        ' der 'Ziel-Bereich' = die Selektion
       Dim arZufall() As Long     ' Array mit allen Zeilennummern von 1..lngZeilen für jede Spalte
       Dim lngZufall As Long      ' eine Zufallszahl zwischen 1 ... lngZeilen
       Dim lngZeilen As Long      ' Anzahl der Zeilen der Quell-Tabelle
       
       Dim intZeilen As Integer   ' Anzahl der zu kopierenden Zeilen (Ziel)
       Dim intSpalten As Integer  ' Anzahl der zu kopierenden Spalten (Ziel)
       
       Dim i As Long, j As Integer ' Zähler
        
       Set rngDst = Selection
       With rngDst
         intZeilen = .Rows.Count
         intSpalten = .Columns.Count
       End With
       Set wsSrc = Worksheets("Daten")
       With wsSrc.UsedRange
         lngZeilen = .Rows.Count
         If intSpalten > .Columns.Count Then intSpalten = .Columns.Count
       End With
       ReDim arZufall(1 To lngZeilen)
        
       Randomize
       For j = 1 To intSpalten      'des Zielbereiches (Selection)
          lngZeilen = UBound(arZufall)
          For i = 1 To lngZeilen
             arZufall(i) = i
          Next i
          For i = 1 To intZeilen    'des Zielbereiches (Selection)
            ' Zufallszahl zwischen 1 und lngZeilen generieren
            lngZufall = Int(lngZeilen * Rnd() + 1)
            ' Quellzelle ist die Zeile mit der Zeilennummer arZufall(lngZufall,j)
            rngDst.Cells(i, j).Value = wsSrc.Cells(arZufall(lngZufall), j).Value
            ' die letzte Zeilennummer auf die gerade gezogene Zeilennummer umkopieren
            arZufall(lngZufall) = arZufall(lngZeilen)
            ' und dann einfach die Arraygrösse erniedrigen
            lngZeilen = lngZeilen - 1
            If lngZeilen < 1 Then Exit For
          Next i
       Next j
    End Sub
    
    Private Sub CommandButton1_Click()
      Call x
    End Sub
    
    Dabei war mir Folgendes in Deiner Beschreibung nicht wirklich klar: Du schreibst einerseits
    andererseits jedoch wieder
    was eine zusätzliche Zufallsauswahl von drei Feldern bedeuten würde.

    Folgende Probleme können im vorgenannten Code auftreten:
    1) Falls Du mehr Zeilen auswählst (Selection) als im Blatt "Daten" Datenzeilen vorhanden sind (intZeilen>lngZeilen), dann gibt es naturgemäß einen Laufzeitfehler, sobald in arZufall(lngZeilen,j) die Variable lngZeilen 0 wird.
    2) Falls die Daten im Blatt "Daten" sehr umfangreich sind, benötigt auch das Array arZufall(i,j) viel Speicherplatz.

    EDIT:
    Ich habe obiges Makro nachträglich abgeändert, sodass beide Probleme in der modifizierten Form nicht mehr (so) auftreten, wie vorhin geschildert.
    Falls Problem 1) auftreten sollte, werden keine weiteren Zeilen mehr ausgefüllt (ohne Laufzeitfehler).
    Problem 2) kann nicht mehr auftreten in der modifizierten Form, da der benötigte Array nicht größer ist als in Deiner Urversion.
     
    Exl121150, 17. Dezember 2010
    #3
  4. Patt User

    Zufallsgenerator

    Hallo,

    habe es gerade mal ausprobiert. Jetzt wird aber leider immer nur eine einzelne Zelle per Zufall ausgewählt, die anderen Felder sind leer!?

    A1 B1 C1 D1 E1
    A2 B2 C2 D2 E2
    A3 B3 C3 D3 E3

    Es wäre super, wenn es alle 5 Felder per Zufall zusammenbauen würde.

    Bsp.
    A3 B2 C1 D2 E1
    A1 B3 C3 D1 E3
    A2 A1 C2 D3 E2

    DANKE!

    Gruß
     
  5. Exl121150 Erfahrener User
    Hallo!

    Es füllt die Zellen der aktuellen Zellmarkierung mit den Zahlen der jeweiligen Spalte aus dem Blatt "Daten" in zufälliger Reihenfolge aus.

    Es kommt also darauf an, wieviele Zellen im aktuellen Blatt markiertiert wurden, und natürlich auch darauf, wieviele Daten im Blatt "Daten" vorhanden sind (beginnend dort in Zelle A1).

    In der beiliegenden Beispieldatei befinden sich die Vorgabedaten im Blatt "Daten" im Bereich A1:D8.
    Im Blatt "Tabelle1" habe nacheinander die 3 umrandeten Bereiche markiert und den Button "CommandButton1" gedrückt, wodurch sich die darin enthaltene Zufallsfüllung ergab.
     
    Exl121150, 20. Dezember 2010
    #5
  6. Patt User
    Hallo,

    das klappt ja prima. Vielen Dank.

    Eine Kleinigkeit habe ich jetzt noch. In meiner Tabelle Daten habe ich in der ersten Zeile Überschriften. Diese werden nun leider auch verteilt, kann man die rausnehmen? Also erst ab 2. Zeile.

    Wär super, DANKE!

    Grüße
     
  7. Exl121150 Erfahrener User
    Hallo,

    ich habe in der beiligenden Datei Deinem Wunsch entsprochen und habe gleichzeitig das Makro systematisch durchforstet.
     
    Exl121150, 21. Dezember 2010
    #7
  8. Patt User

    Zufallsgenerator

    Hallo,

    einfach nur KLASSE!!!!

    Vielen Dank.

    Gruß und schöne Feiertage. :lol:
     
  9. Patt User
    Hallo Exl121150,

    ist zwar schon ne Weile her, ich habe mich aber aktuell wieder mit meiner Excel Liste beschäftigt und könnte nochmal dein Expertenwissen brauchen :)

    Kannst du mir sagen/zeigen wie man die per Zufall zusammengewürfelte Zielzeile nochmals vor dem einfügen verändern kann.

    Aktuell ist es ja so:

    aus

    A1 B1 C1 D1 E1
    A2 B2 C2 D2 E2
    A3 B3 C3 D3 E3

    wird per Zufall

    A3 B2 C1 D2 E1
    A1 B3 C3 D1 E3
    A2 A1 C2 D3 E2

    Ich würde nun gerne noch die Möglichkeit haben zu den einzelnen Werten in einer gewissen Range was dazuaddieren oder zu subtrahieren.

    A3(+4) B2(-2) C1(gleich lassen) D2(-3) E1(gleich lassen)

    Wäre natürlich super, wenn man den Bereich im Code für jede Spalte festlegen könnte. Also dass in Spalte A im Bereich -5 bis +5 per Zufall ein Wert dazugezählt oder wenn er negativ ist abgezogen wird.

    Ich hoffe ich habe mich verständlich ausgedrückt :)

    Wäre klasse wenn es hierzu eine Lösung gibt!

    Viele Grüße
     
Thema:

Zufallsgenerator

Die Seite wird geladen...
  1. Zufallsgenerator - Similar Threads - Zufallsgenerator

  2. Teambuilding mit Zufallsgenerator

    in Microsoft Excel Hilfe
    Teambuilding mit Zufallsgenerator: Hallo miteinander, ich habe hier schon die Posts mit Zufallsgenerator durchgesehen, aber noch nichts passendes gefunden. Ich möchte gerne auf dem Prinzip des Zufalls eine Tabelle zur Bildung von...
  3. Gruppen mit Zufallsgenerator auslosen

    in Microsoft Excel Hilfe
    Gruppen mit Zufallsgenerator auslosen: Hallo zusammen, ich habe für verschiedenste Turniere zu verwalten, eine Exceldatei erstellt. (Enthaltene Arbeitsmappen: Anmeldung, Gruppenauslosung, Gruppenspiele, 8erDKO, 16erDKO und 32erDKO,...
  4. Zufallsgenerator ohne Wiederholung und Dokumentation

    in Microsoft Excel Hilfe
    Zufallsgenerator ohne Wiederholung und Dokumentation: Hallo zusammen, das ist ein echt tolles Forum, jedoch habe ich noch keine Lösung für meine Aufgabenstellung gefunden, oder ich verstehe die angebotenen Lösungen nicht. Von daher kann mir...
  5. Gruppeneinteilung: Zufallsgenerator ohne Wiederholung

    in Microsoft Excel Hilfe
    Gruppeneinteilung: Zufallsgenerator ohne Wiederholung: Hallo, ich versuche gerade mit Excel eine Datei zu erstellen, welche aus einem Kreis von 50 Personen zufällige Zweiergruppen erstellt. Die Gruppenaufteilung muss mehrfach durchführbar sein und...
  6. Gewichteter "Zufallsgenerator"

    in Microsoft Excel Hilfe
    Gewichteter "Zufallsgenerator": Hi, erstmal ein Screenshot von meiner Arbeitsmappe: [ATTACH] nun zum problem: ich möchte einen Zufallsgenerator für die Werte 1-45 erstellen. soweit kein problem, mit =ZUFALLSBEREICH(1;45)...
  7. Zufallsgenerator

    in Microsoft Excel Hilfe
    Zufallsgenerator: Hallo Leute, ich habe folgendes Problem und bin ziemlich verzweifelt. Ich muss eine Schichtplan erstellen und ich wollte eine automatische Zuordnung der Namen per Zufall einstellen. Das...
  8. Problem beim Erstellen eines Zufallsgenerators

    in Microsoft Excel Hilfe
    Problem beim Erstellen eines Zufallsgenerators: Hallo zusammen, habe das Forum mehrfach durchsucht, aber leider keine passende Lösung für mein Problem gefunden. Ich habe einen Datensatz bestehend aus 140 Namen und jeweils dazugehörigen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden