myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Zufallsgenerator mit Hilfe von Makros in Excel (https://mygully.com/showthread.php?t=3855047)

Bensel 28.05.15 16:01

Zufallsgenerator mit Hilfe von Makros in Excel
 
Hallo Liebe Helferlein

Ich bin irgendwie zu blöd für makros in excel und brauche Hilfe

Folgendes Hätte ich gerne das er zufällig aus einer reihe von Sätzen die Im zweiten register Blatt stehen wählt und die dann in angegebene zeilen in tabelle eins einfügt

das "i" tüpfelchen wäre es dann natürlich noch das er jeden satzt nur einmal nimmt bzw Ich die ausgabe mit einer Tastenkombination steuern kann als zB gewünschtes feld auswählen und bei drücken von Shift "w" dann die sache einfügt

Folgendes habe Ich schon aus dem Internet geschöpft

Code:

Sub Makro1()
    Dim Zufall%
    Zufall = Int((6 * Rnd) + 1)  'aus "A1:A6"
  ' MsgBox Cells(Zufall, 1)
End Sub

werde daraus nur nicht so wirklich schlau bzw kann es nicht für meine zwecke umschreiben

Hoffe auf schnelle Hilfe

Grüße und danke im voraus :T

PS Hoffe Ich bin hier überhaupt im richtigen threat

eitch100 29.05.15 10:25

Hi... also so richtig habe ich nicht verstanden, was du genau vorhast...
Hier mal ein Code, der dir den Bereich von K1:K6 zufällig mischt und ab dort einfügt (allerdings auf demselben Blatt), wo die markierte Zelle ist...
Ich würde mir einen CommandButton auf das Blatt legen und folgenden Code einfügen...
Code:

  Dim myRange As Range
  Dim myZeilen As Integer, myZufall As Integer
  Dim zeile, spalte
 
  zeile = ActiveCell.Row
  spalte = ActiveCell.Column
 
  Randomize
 
  Range("K1:K6").Select
  myZeilen = Selection.Rows.Count
 
  Range(Cells(zeile, spalte), Cells(zeile + myZeilen - 1, spalte)).ClearContents 'der Bereich der leer sein muss
  Range("A1:J100").ClearContents 'wenn ein bestimmter Bereich vorm (nächsten) Mischen geleert werden soll
 
  For Each myRange In Selection.Cells
 
      myZufall = Int((myZeilen * Rnd) + 1)
     
      Do While Not IsEmpty(Cells(myZufall + zeile - 1, spalte))
        myZufall = Int((myZeilen * Rnd) + 1)
      Loop
     
      Cells(myZufall + zeile - 1, spalte).Value = myRange.Value
     
    Next myRange
   
    Cells(zeile, spalte).Select

Edit: In diesem Code mischt er die Werte aus K1:K6 immer in L1:L6. Nun könntest du aus bestimmten Zellen mit einer Formel auf die gemischten Werte zugreifen... Also z.B. in die Zelle A3 die Formel =L1, in Zelle A5 die Formel =L2, usw. Mit einem klick auf den Button wird neu gemischt...
Code:

  Dim myRange As Range
  Dim myZeilen As Integer, myZufall As Integer
  Dim zeile, spalte
 
  zeile = 1
  spalte = 12
 
  Randomize
 
  Range("K1:K6").Select
  myZeilen = Selection.Rows.Count
 
  Range("L1:L6").ClearContents
 
  For Each myRange In Selection.Cells
 
      myZufall = Int((myZeilen * Rnd) + 1)
     
      Do While Not IsEmpty(Cells(myZufall + zeile - 1, spalte))
        myZufall = Int((myZeilen * Rnd) + 1)
      Loop
     
      Cells(myZufall + zeile - 1, spalte).Value = myRange.Value
     
    Next myRange

    Range("A1").Select


Bensel 29.05.15 16:30

erläuterumg
 
zur Erläuterung Ich muss knappe 2 Jahre Berichtsheft nachschreiben weil die IHK nicht zufrieden ist mit dem wie Ich es gemacht habe
Somit Dachte Ich mir da Ich Stationen mäßig Ausgebildet wurde und dann an der jeweiligen Station nahezu jeden tag das gleiche gemacht habe kann ich auch einfach mir 30 Standardsätze ausdenken und diese dann auf den Monat per Zufallsgenerator einfügen lassen
auf die Idee bin ich gekommen da wir auf der arbeit nach einem ähnlichen Prinzip mit einem Zufallsgenerator Test's erstellen

die 30 Sätze befinden sich in der 2ten Tabelle der Mappe das Berichtsheft in der ersten

Danke schon mal für deine Hilfe ich werde es ausprobieren

eitch100 29.05.15 16:52

Und du meinst, das merken die nicht, wenn sie dich eh schon auf dem Kieker haben?:confused:

Man könnte es theoretisch so machen, dass per Doppelklick auf eine beliebige Zelle dort einer der Sätze eingefügt wird, dann dieser Satz in der Liste als "benutzt" markiert wird und somit nach und nach die Liste durchgearbeitet wird. Wenn alle Sätze markiert sind, wird neu gemischt und der Spaß geht von vorne los...

Dann könntest du allerdings auch gleich einen der Sätze markieren und in jedem Monat einmal einfügen. Das dauert auch nicht viel länger und erspart vor allem mir viel Arbeit...:D


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.