Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zufalls-Verteilung

Forumthread: Zufalls-Verteilung

Zufalls-Verteilung
25.08.2014 16:37:17
Udo
Hallo erstmal,
möchte eine Gruppe mit 8 Teilnehmern über einen Zeitraum von 32 Wochen gleichmäßig verteilen. Pro Termin/Woche sollen aber nur 4 der 8 Teilnehmer zu Einsatz kommen! Die jeweiligen Kombinationen sollten variabel/zufällig sein, d.h. keine feste Pärchenbildung!
Wie stelle ich das an, bzw. wie komme ich hier zum Ergebnis?
Vielen Dank für eure schnelle Hilfe/Unterstützung!

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufalls-Verteilung
25.08.2014 17:03:49
fcs
Hallo Udo,
wie soll denn deine Zufallsauswahl ablaufen?
Willst du jede Woche eine Ziehung 4 aus 8 machen?
Dann kann es aber passieren, dass bei durchschnittlich 16 Teilnahmen ein Teilnehmer z.B. nur 10 ein ander aber über 20 hat.
Oder sollen zu Beginn 2 Gruppen zufällig zusammengestellt werden und dann systematisch zwischend en Gruppen rotiert werden bis jeder Teilnehmer 16 Teilnahmen hat?
Gruß
Franz

Anzeige
AW: Zufalls-Verteilung
25.08.2014 17:14:22
Udo
Hallo Franz,
jede Woche sollen 4 Teilnehmer aktiv werden. Nach Möglichkeit aber immer in einer anderen, zufälligen Kombination. Wenn es irgenwie geht, keine Paarbildungen!
Gruß Udo

AW: Zufalls-Verteilung
26.08.2014 10:53:26
fcs
Hallo Udo,
hier mal ein Ansatz per Makro. Die am jeweiligen Termin aktiven Teilnehmer werden in den Spalten E bis L eingetragen. An jedem 2. Termin werden die am vorherigen Termin nicht aktiven Teilnehmer eingetragen.
An jedem Termin die 4er-Gruppen per Zufal zusammenzustellen kann zu extrem Unterschieden bei der Anzahl der Teilnahmen führen.
Gruß
Franz
Sub Teams_kombinieren()
'8 Teilnehmer zu zufälligen 4er-Gruppen zusammenstellen
Dim varNumber As Single
Dim objCol As Collection, intCol As Integer
Dim varZufall
Dim Zeile As Long, Spalte As Long
Const ZeileNamen As Long = 1 'Zeile mit den Namen
Const Zeile1 As Long = 2 'Zeile mit 1. Termin
Const SpaName1 As Long = 5 'Spalte mit 1. Namen
Const AnzNamen As Long = 8 'Anzahl Namen
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
.Range("E2:L34").ClearContents
For Zeile = Zeile1 To 34 '34 = Zeile mit letztem Termin
If Zeile Mod 2 = IIf(Zeile1 Mod 2 = 0, 1, 0) Then
'in der Vorwoche nicht gesetzte Teilnehmer setzen
For Spalte = SpaName1 To SpaName1 + AnzNamen - 1 'E bis L
If .Cells(Zeile - 1, Spalte) = "" Then
.Cells(Zeile, Spalte) = .Cells(ZeileNamen, Spalte)
End If
Next
Else
'Collection mit Anzahlnamen erstellen
Set objCol = New Collection
For intCol = 1 To AnzNamen
objCol.Add Item:=intCol
Next
'4 Name zufällig auswählen
For intCol = AnzNamen To 5 Step -1
varNumber = Rnd(Time)
varZufall = Int((intCol - 1 + 1) * varNumber + 1)
Randomize varNumber
.Cells(Zeile, SpaName1 - 1 + objCol(varZufall)) = _
.Cells(ZeileNamen, SpaName1 - 1 + objCol(varZufall))
'gewählte Nummer aus Collection löschen
objCol.Remove (varZufall)
Next
End If
Next Zeile
End With
End Sub

Anzeige
AW: Zufalls-Verteilung
26.08.2014 14:39:54
Udo
Hey, danke Franz. Ist ein guter Anfang, den ich dann weiter ausbauen kann!Vielen vielen Dank, hast mir sehr geholfen!

Na dann erledigt! owT
26.08.2014 21:59:30
Luc:-?
:-?

AW: Zufalls-Verteilung
25.08.2014 17:09:06
Udo
Hallo erstmal,
möchte eine Gruppe mit 8 Teilnehmern über einen Zeitraum von 32 Wochen gleichmäßig verteilen. Pro Termin/Woche sollen aber nur 4 der 8 Teilnehmer zu Einsatz kommen! Die jeweiligen Kombinationen sollten variabel/zufällig sein, d.h. keine feste Pärchenbildung!
Die 32 Termine stehen in Spalte D, die Teilnehmer in Zeile 1 der Spalten E-L! Heißt: der zu füllende Bereich wäre E2 bis L34. Summenbildung in Zeile 35 (Spalten E-L) wäre auch noch schön ;-)!
Wie stelle ich das an, bzw. wie komme ich hier zum Ergebnis?
Vielen Dank für eure schnelle Hilfe/Unterstützung!

Anzeige
AW: Zufalls-Verteilung
26.08.2014 04:12:39
Adis
Hallo
anbei eine kleine Beispieldatei für Zufallsverteilung. Bitte prüfen ob das Ergebnis passt.
Würde mich freuen wenn die Aufgabe gelöst wurde.
https://www.herber.de/bbs/user/92294.xls
Gruss Adis

AW: Zufalls-Verteilung
26.08.2014 10:10:14
Udo
Hallo Adis, prima, sieht sehr gut aus! Vielen lieben Dank!!

Anzeige
AW: Zufalls-Verteilung
28.08.2014 11:00:07
Udo
Hallo Adis, hattest Du meine Nachricht nicht erhalten? Hier noch einmal ;-)
Hat alles prima geklappt, nochmals vielen Dank!!
Gruß Udo
;
Anzeige

Infobox / Tutorial

Gleichmäßige Verteilung von Teilnehmern in Excel


Schritt-für-Schritt-Anleitung

Um eine Gruppe von 8 Teilnehmern über 32 Wochen in Excel gleichmäßig zu verteilen, folge diesen Schritten:

  1. Datenstruktur erstellen:

    • Trage die Teilnehmer in Zeile 1 der Spalten E bis L ein.
    • Die 32 Termine kommen in Spalte D von Zeile 2 bis 34.
  2. Makro erstellen:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge ein neues Modul hinzu (Einfügen > Modul) und kopiere den folgenden Code hinein:
    Sub Teams_kombinieren()
       '8 Teilnehmer zu zufälligen 4er-Gruppen zusammenstellen
       Dim varNumber As Single
       Dim objCol As Collection, intCol As Integer
       Dim varZufall
       Dim Zeile As Long, Spalte As Long
       Const ZeileNamen As Long = 1 'Zeile mit den Namen
       Const Zeile1 As Long = 2 'Zeile mit 1. Termin
       Const SpaName1 As Long = 5 'Spalte mit 1. Namen
       Const AnzNamen As Long = 8 'Anzahl Namen
       Dim wks As Worksheet
       Set wks = ActiveSheet
       With wks
           .Range("E2:L34").ClearContents
           For Zeile = Zeile1 To 34 '34 = Zeile mit letztem Termin
               If Zeile Mod 2 = IIf(Zeile1 Mod 2 = 0, 1, 0) Then
                   'in der Vorwoche nicht gesetzte Teilnehmer setzen
                   For Spalte = SpaName1 To SpaName1 + AnzNamen - 1 'E bis L
                       If .Cells(Zeile - 1, Spalte) = "" Then
                           .Cells(Zeile, Spalte) = .Cells(ZeileNamen, Spalte)
                       End If
                   Next
               Else
                   'Collection mit Anzahlnamen erstellen
                   Set objCol = New Collection
                   For intCol = 1 To AnzNamen
                       objCol.Add Item:=intCol
                   Next
                   '4 Name zufällig auswählen
                   For intCol = AnzNamen To 5 Step -1
                       varNumber = Rnd(Time)
                       varZufall = Int((intCol - 1 + 1) * varNumber + 1)
                       Randomize varNumber
                       .Cells(Zeile, SpaName1 - 1 + objCol(varZufall)) = _
                       .Cells(ZeileNamen, SpaName1 - 1 + objCol(varZufall))
                       'gewählte Nummer aus Collection löschen
                       objCol.Remove (varZufall)
                   Next
               End If
           Next Zeile
       End With
    End Sub
  3. Makro ausführen:

    • Kehre zu Excel zurück und führe das Makro aus (Entwicklertools > Makros).
  4. Summenbildung:

    • Füge in Zeile 35 Formeln ein, um die Anzahl der Teilnahmen pro Teilnehmer zu summieren.

Häufige Fehler und Lösungen

  • Fehler: Das Makro läuft nicht.

    • Lösung: Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind.
  • Fehler: Teilnehmer werden nicht gleichmäßig verteilt.

    • Lösung: Überprüfe die Logik im Makro und stelle sicher, dass die Bedingungen für die Zufallsziehung korrekt sind.

Alternative Methoden

  • Zufallszahlen nutzen: Du kannst die Funktion ZUFALLSZAHL() verwenden, um zufällige Werte in eine Hilfsspalte einzufügen und dann die Teilnehmer entsprechend zu sortieren.

  • Formeln: Eine Möglichkeit besteht darin, die Teilnehmer manuell zu mischen und dann in den jeweiligen Zellen zu verteilen.


Praktische Beispiele

  • Beispiel 1: Ein einfaches Excel-Dokument, in dem du die Teilnehmer in Zeile 1 und die Termine in Spalte D einträgst, kannst du mit dem obigen Makro gleichmäßig verteilen.

  • Beispiel 2: Wenn du mehr Teilnehmer oder eine andere Anzahl von Gruppen erstellen möchtest, passe die Konstanten im Makro entsprechend an.


Tipps für Profis

  • Anpassung des Makros: Das Makro kann leicht angepasst werden, um mehr Teilnehmer oder andere Gruppengrößen zu berücksichtigen.

  • Datenvalidierung: Verwende Datenvalidierung, um sicherzustellen, dass die Eingaben in den Zellen den Anforderungen entsprechen, bevor das Makro ausgeführt wird.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ein Teilnehmer nicht mehrmals in einer Woche eingeplant wird?
Das Makro berücksichtigt dies, indem es die nicht gesetzten Teilnehmer in den geraden Zeilen einträgt.

2. Ist es möglich, die Anzahl der Termine zu ändern?
Ja, du kannst die Anzahl der Zeilen im Makro anpassen, um mehr oder weniger Termine zu berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige