Microsoft Excel

Herbers Excel/VBA-Archiv

Zufallsgenerator

Betrifft: Zufallsgenerator von: Maximilian Maier
Geschrieben am: 18.10.2007 21:52:20

Hallo zusammen!

Ich bräuchte als Makro Anfänger mal Eure Hilfe.
Ich möchte aus einer Excel-Liste mit verschiedenen Nummer (Auftragsnummern, welche nicht fortlaufend sind sondern durcheinander) eine zufällig ausgewählte Nummer in ein anderes Excel-File schreiben (nehmen wie mal an das Excel File ist schon vorhanden und heist "zufall.xls").

Wie kann ich hier am Besten vorgehen?

Über jede Hilfe würd ich mich sehr freuen.

Viele Grüße,
Max

  

Betrifft: AW: Zufallsgenerator von: Josef Ehrensberger
Geschrieben am: 18.10.2007 22:03:06

Hallo Max,

eine Möglichkeit.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub zufallnummer()
Dim lngS As Long, lngE As Long, lngZ As Long
Dim intC As Integer
Dim res As Variant

With Sheets("Tabelle1") 'Tabelle mit den Auftragsnummern - Name anpassen!
    
    intC = 1 'Spalte mit den AUftragsnummern - Anpassen! (1=A, 2=B,...)
    
    lngS = 2 'erste Zeile mit Auftragsnummern - Anpassen!
    
    lngE = Application.Max(lngS, Cells(Rows.Count, intC).End(xlUp).Row)
    
    Randomize
    
    Do
        lngZ = Clng((lngE - lngS - 1) * Rnd + lngS)
        
        res = .Cells(lngZ, intC).Value
        
    Loop While res = Empty
    
End With

Workbooks("zufall.xls").Sheets("Tabelle1").Range("A1") = res
'Mappenname, Tabellenname und Zelladresse anpassen!

End Sub



Gruß Sepp



  

Betrifft: AW: Zufallsgenerator von: Jean Gitanes
Geschrieben am: 19.10.2007 17:04:01

Hallo Sepp,

zur do ... loop-Schleife Deines Programms

Do

lngZ = Clng((lngE - lngS - 1) * Rnd + lngS)

res = .Cells(lngZ, intC).Value

Loop While res = Empty

habe ich folgende Frage, um deren Beantwortung ich Dich bitte:

Was genau macht die 2. Zeile? Die Berechnung ist mir nicht klar.

Dank im Voraus.

Gruß

Jean


  

Betrifft: AW: Zufallsgenerator von: Josef Ehrensberger
Geschrieben am: 19.10.2007 19:46:46

Hallo Jean,


Do

'Zufallszahl zwischen lngS und lngE ermitteln
lngZ = Clng((lngE - lngS - 1) * Rnd + lngS)

'Wert aus der Zelle(Zeile, Spalte) der Variablen "res" zuweisen
res = .Cells(lngZ, intC).Value

'Prüfen ob "res" einen Wert enthält, wenn ja - Schleife verlassen
Loop While res = Empty




Gruß Sepp



  

Betrifft: AW: Zufallsgenerator von: Jean Gitanes
Geschrieben am: 20.10.2007 14:02:31

Hallo Sepp,

vielen Dank für Deine Geduld, die Du für meine Fragen aufbringst.

Eine Sache ist mir noch immer nicht klar:

Weshalb kommt die Berechnung in eine Schleife. Die Berechnung führt doch in jedem Fall zu einem zulässigen Wert oder täusche ich mich da?.
Eine kurze Antwort würde schon reichen. Es geht um das Verständnis des Programms.
Dank im Voraus.
Gruß
Jean


  

Betrifft: AW: Zufallsgenerator von: Josef Ehrensberger
Geschrieben am: 20.10.2007 14:06:50

Hallo Jean,

du hast recht, vorausgesetzt das alle Zellen einen Wert enthalten. Da das aus der ursprünglichen Frage aber nicht herauszulesen war, habe ich die Schleife zur Sichertheit eingebaut.


Gruß Sepp



  

Betrifft: AW: Zufallsgenerator von: Jean Gitanes
Geschrieben am: 20.10.2007 14:58:26

Hallo Sepp,

aber natürlich. Du hast recht. Vielen Dank für Deine Hinweise.
Ein schönes Wochenende.
Gruß
Jean


  

Betrifft: AW: Zufallsgenerator von: Maximilian Maier
Geschrieben am: 26.10.2007 17:54:02

Vielen Dank für das Makro. Funktioniert.

Ich hätte da aber noch eine Änderung:

Meine Auftragsnummer stehen wie gesagt in Spalte A. In Spalte B habe ich nun zu den Auftragsnummer noch Gruppen (001, 002, 003 ...).

Nun soll das Makro zuerst in Spalte C aller zufällig ausgewählten Auftragsnummern der Gruppe 001 schreiben, alle der Gruppe 002 in Spalte D, alle der Gruppe 003 in Spalte E usw.

Für jede Gruppe sollen 50 Auftragsnummer ausgegeben werden, allerdings in eine Andere Excel Tabell wie der Datenbestand. (nennen wir sie Zufallergebnis.xls)



Ich weiß, dass ist nicht so einfach. Aber Eure Unterstützung würde mir sehr weiterhelfen. Ich bekomm das nicht hin.......

Danke im voraus.



Max


 

Beiträge aus den Excel-Beispielen zum Thema "Zufallsgenerator"