Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
364to368
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Exel Liste generieren

Exel Liste generieren
19.01.2004 10:32:25
Ralf
Hallo,
gibt es eine Möglichkeit für folgendes Problem?
Ich soll eine Lisate generieren mit 3 Spalten, die erste ist ein Datum (Montag bis Freitag, Samstag und Sonntag sollen rausbeliben), 2. Spalte ist Uhrzeit und die dritte sind Namen (20 Namen die zufällig ausgewählt werden sollen)
Es soll also eine zufällige Liste entstehen mit Namen die zu der und der Zeit an einem bestimmten Tag etwas gemacht haben.
Die Anzahl der Einträge pro Datum soll unterschiedlich(zufällig sein) und dann mit dem nächsten Tag darunter weitergehen.
Vielen Dank

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Exel Liste generieren
19.01.2004 12:01:13
ANdreas
Hallo Ralf,
einfach in ein Standardmodul einfügen und die Namen im Array nach Deinen Wünschen füllen:

Private Function ZZ(iMax%, iMin%) As Integer 'Zufallszahl
ZZ = Int((iMax - iMin + 1) * Rnd + iMin)
End Function

Sub Zufall()
Dim i%, j%, arrWochentag As Variant, arrName As Variant
arrWochentag = Array("Mo", "Di", "Mi", "Do", "Fr")
arrName = Array("Joe", "Jim", "Tom", "Hans", "Gerd")
Randomize
For i = 1 To 20
Cells(i + 1, 1).Value = arrWochentag(ZZ(4, 0))
Cells(i + 1, 2).Value = TimeSerial(ZZ(23, 0), ZZ(59, 0), 0)
Cells(i + 1, 3).Value = arrName(ZZ(UBound(arrName), 0))
Next i
End Sub

Hoffe das hilft weiter,
Andreas
Anzeige
AW: Exel Liste generieren
19.01.2004 12:08:03
@ Andreas
Hi Andreas, vielen Dank, das hilft mir schon sehr,
aussehen soll das ja nachher so:
01.01.2004 07:30 Gerd
08:45 Harry
02.01.2004 07.45 Hugo usw

Die Anzahl soll immer variabel sein, die Zeiten von 7 Uhr morgens bis 17 Uhr und die Namen sind nur 6 Stück glaube ich, wo soll ich die hinschreiebn??
Vielen vielen Dank
Ralf
AW: Exel Liste generieren
19.01.2004 12:10:15
Ralf
Ist es vielleicht auch möglich von Afang an einen ganzen Monat zu nehemen. Also wen ich das ausführe auf einem Tabellenblatt dass ich ihm das Anfags und das Enddatum sage und er mirdie Wochentage wie oben genannt darunter bastelt?
Anzeige
AW: Excel Liste generieren
19.01.2004 12:22:17
ANdreas
Hallo Ralf,
hier noch mal etwas angepasst:

Private Function ZZ(iMax%, iMin%) As Integer 'Zufallszahl
ZZ = Int((iMax - iMin + 1) * Rnd + iMin)
End Function

Sub Zufall()
Dim i%, j%, arrName As Variant
arrName = Array("Joe", "Jim", "Tom", "Hans", "Gerd") '<-- Deine Namen hier eintragen
Randomize
For i = 1 To 50
Cells(i + 1, 1).Value = DateSerial(Year(Now), Month(Now), ZZ(28, 1))
Cells(i + 1, 2).Value = TimeSerial(ZZ(23, 0), ZZ(59, 0), 0)
Cells(i + 1, 3).Value = arrName(ZZ(UBound(arrName), 0))
Next i
Range("A1:C1000").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For j = i To 2 Step -1
If Cells(j, 1).Value = Cells(j - 1, 1).Value Then Cells(j, 1).ClearContents
Next j
End Sub

Viel Spaß,
Andreas
Anzeige
AW: Excel Liste generieren
19.01.2004 12:27:53
@ Andreas
Das sieht sehr gut aus, er bringt jedoch ne Fehlermeldung beim Ausführen.
In der Zeile DataOption1:=xlSortNormal sagt er "Benanntes Argument nicht gefunden"
Ralf
AW: Excel Liste generieren
19.01.2004 13:09:26
@ Andreas
Kann es sein dass Excel 2000 den Befehl DataOption nicht kennt? Beim Debuggen markiert er mir den blau undbringt die Fehlermeldung.
Ralf
AW: Excel Liste generieren
19.01.2004 13:13:14
ANdreas
Hallo Ralf,
hier noch mal mit variablem Anfangs- und Enddatum und ohne Wochenende:

Private Function ZZ(iMax%, iMin%) As Integer 'Zufallszahl
ZZ = Int((iMax - iMin + 1) * Rnd + iMin)
End Function

Sub Zufall()
Dim i%, j%, dTag As Date, arrName As Variant
Dim AnfDatum As Date, EndDatum As Date
AnfDatum = DateSerial(2004, 1, 1) 'Jahr Monat Tag
EndDatum = DateSerial(2004, 1, 31)
j = DateDiff("d", AnfDatum, EndDatum) + 1
arrName = Array("Joe", "Jim", "Tom", "Hans", "Gerd") '<-- Deine Namen hier eintragen
Randomize
For i = 1 To 50
dTag = AnfDatum + ZZ(j, 1) - 1
While Weekday(dTag) = 1 Or Weekday(dTag) = 7 'Nicht Sonntag oder Samstag
dTag = ZZ(j, 1) + AnfDatum - 1
Wend
Cells(i + 1, 1).Value = dTag
Cells(i + 1, 2).Value = TimeSerial(ZZ(17, 7), ZZ(59, 0), 0) '07:00 bis 17:59
Cells(i + 1, 3).Value = arrName(ZZ(UBound(arrName), 0))
Next i
Range("A1:C1000").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For j = i To 2 Step -1
If Cells(j, 1).Value = Cells(j - 1, 1).Value Then Cells(j, 1).ClearContents
Next j
End Sub

Hoffe das hilft weiter,
Andreas
Nibbles für Excel
Anzeige
AW: Excel Liste generieren
19.01.2004 13:16:31
@ Andreas
Super, vielen vielen Dank.... kannst du mir nur nochmal eben sagen wie ich es schaffe dass er ir nach jedem Tag zum nächsten eine Lerrzeile einfügt??
Ansonsten super, Respekt!!!!
Vielen Dank, genau so sollte es sein!
Ralf
AW: Excel Liste generieren
19.01.2004 13:27:39
ANdreas
Hallo Ralf,
einfach den Teil ab der Sortierung austauschen:
Range("A1:C1000").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For j = i To 2 Step -1
If Cells(j, 1).Value = Cells(j - 1, 1).Value Then Cells(j, 1).ClearContents
Next j
i = Cells(2, 1).End(xlDown).Row
While Not i = Rows.Count
Rows(i).Insert Shift:=xlDown
i = Cells(i, 1).End(xlDown).End(xlDown).Row
Wend
Viel Spaß,
Andreas
Anzeige
AW: Excel Liste generieren
19.01.2004 13:43:49
@ Andreas
Leider bin ich nicht so bewandert in VBA und weiß daher nicht wo ich den Teil genau einfgen muss.
Eine Sache habe ich noch: Die Zeiten pro Tag müssten Chronologisch sein, also zum Beispiel um 7.15 Anfangen und der letzt um 16.25 aufhören , ist das möglich?
Würdest du den Quelltext noch einmal komplett einstellen?
Hoffe du hast noch so viel Gedult mit mir.
Die Formatierung in den Zeiten kann man die auf "hh:mm" stellen? statt AM und PM?

Vielen vielen Dank
AW: Excel Liste generieren
19.01.2004 14:01:17
ANdreas
Hallo Ralf,
die Formatierung hat nichts mit dem Makro zu tun, die kannst Du einfach für die ganze Spalte wie gewohnt setzen. Also Spalte B markieren, STRG+1 und beim Zahlenformat Dein gewünschtes Uhrzeitformat auswählen - gleich gilt auch für die Datumsangaben in Spalte A.
Anbei noch mal komplett das Makro:

Private Function ZZ(iMax%, iMin%) As Integer 'Zufallszahl
ZZ = Int((iMax - iMin + 1) * Rnd + iMin)
End Function

Sub Zufall()
Dim i&, j%, k%, l%, dTag As Date, arrName As Variant
Dim AnfDatum As Date, EndDatum As Date
Range("A2:C1000").ClearContents 'Bereich loeschen
AnfDatum = DateSerial(2004, 1, 1) 'Jahr Monat Tag
EndDatum = DateSerial(2004, 1, 31)
j = DateDiff("d", AnfDatum, EndDatum) + 1
arrName = Array("Joe", "Jim", "Tom", "Hans", "Gerd") '<-- Deine Namen hier eintragen
Randomize
For i = 1 To 50
dTag = AnfDatum + ZZ(j, 1) - 1
While Weekday(dTag) = 1 Or Weekday(dTag) = 7 'Nicht Sonntag oder Samstag
dTag = ZZ(j, 1) + AnfDatum - 1
Wend
Cells(i + 1, 1).Value = dTag
k = ZZ(16, 7) '07 bis 16
Select Case k
Case 7: l = ZZ(59, 15) 'wenn 7, dann Minuten zw. 15 und 59
Case 16: l = ZZ(0, 25) 'wenn 16 dann nur bis 25
Case Else: l = ZZ(59, 0)
End Select
Cells(i + 1, 2).Value = TimeSerial(k, l, 0)
Cells(i + 1, 3).Value = arrName(ZZ(UBound(arrName), 0))
Next i
Range("A1:C1000").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For j = i To 2 Step -1
If Cells(j, 1).Value = Cells(j - 1, 1).Value Then Cells(j, 1).ClearContents
Next j
i = Cells(2, 1).End(xlDown).Row
While Not i = Rows.Count
Rows(i).Insert Shift:=xlDown
i = Cells(i, 1).End(xlDown).End(xlDown).Row
Wend
End Sub

Viel Spaß,
Andreas
Anzeige
DANKE
19.01.2004 14:13:17
@ Andreas
Jetzt funktioniert es super...vielen vielen Dank, echt spitzeRespekt...für die Mühe und die Kompetenz..weiter so...

Ralf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige