Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zufallsgenerator

Zufallsgenerator
18.10.2007 21:52:20
Maximilian
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallsgenerator
18.10.2007 22:03:06
Josef
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

Anzeige
AW: Zufallsgenerator
19.10.2007 17:04:01
Jean
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

AW: Zufallsgenerator
19.10.2007 19:46:00
Josef
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

Anzeige
AW: Zufallsgenerator
20.10.2007 14:02:31
Jean
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

AW: Zufallsgenerator
20.10.2007 14:06:00
Josef
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

Anzeige
AW: Zufallsgenerator
20.10.2007 14:58:26
Jean
Hallo Sepp,
aber natürlich. Du hast recht. Vielen Dank für Deine Hinweise.
Ein schönes Wochenende.
Gruß
Jean

AW: Zufallsgenerator
26.10.2007 17:54:02
Maximilian
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige