Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zufällig jemanden einen Partner zuordnen (Wichteln)

Forumthread: Zufällig jemanden einen Partner zuordnen (Wichteln)

Zufällig jemanden einen Partner zuordnen (Wichteln)
30.10.2023 19:09:57
Kaenny
Hallo, ich hoffe ich finde hier eine Lösung. Ich habe schon einige Stunden mit suchen verbracht. Es geht darum, das ich eine Tabelle habe, in der Spalte A stehen die angemeldeten Personen (Namen, derzeit ab A2 bis A128) - Spalte B soll so gefüllt werden, das alle die mitmachen dort jemanden zufällig zugeordnet werden ohne das er sich quasi selbst bewichtelt.

Bisher habe ich mich immer mit dem Befehl =ZUFALLSZAHL() über Wasser gehalten. Was leider den Nachteil hat, das bei der kleinsten Änderung in der Liste, die Verteilung neu erfolgt. Das würde ich gerne Umgehen und das erst nach einem erneuten Knopfdruck auf ein Feld die Verteilung erfolgt.

Ich hatte mal vor Jahren ein Makro gefunden, leider weiß ich nicht mehr wo und nachsehen kann ich auch nicht, da dies auf meinem defekten Laptop gespeichert ist. Das Forum hab ich auch schon durchgestöbert, habe aber nicht genug Wissen, um die hier genannten Makris selbst abzuändern, das es passen würde.

Ich würde mich sehr freuen, wenn jemand mir helfen kann. Danke
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufällig jemanden einen Partner zuordnen (Wichteln)
30.10.2023 20:35:11
Piet
Hallo

probiere bitte mal den unteren Code mit Zufallszahl über Button. Würde mich freuen wenn es auf Anhieb klappt.
Es gibt keine doppelten x Zahlen, und keine benachbarten Zellen mit gleichem Zahlenwert!

mfg Piet

  • Sub Zufall_ausfüllen()
    Dim AC As Range, x, lz1 As Long
    lz1 = Cells(Rows.Count, 1).End(xlUp).Row
    Range("B:B").ClearContents
    Randomize 'Zufall aktivieren
    For Each AC In Range("A2:A" & lz1)
    neu: x = CInt(Rnd * lz1 - 1)
    'Keine Wiederholungen oder x=AC Wert
    If x 1 Or x > lz1 Then GoTo neu
    If Cells(x + 1, 2) > Empty Then GoTo neu
    If Cells(x + 1, 2) = AC.Value Then GoTo neu
    Cells(x + 1, 2) = AC.Value
    Next AC
    'MsgBox "Fertig"
    End Sub
  • Anzeige
    AW: Zufällig jemanden einen Partner zuordnen (Wichteln)
    30.10.2023 21:13:31
    daniel
    Hi fixiere doch die Zufallszahl, indem du sie kopierst und als Wert einfügst.


    Das kann man auch per Makro auf Knopfdruck machen lassen:

    With Range("B2:B" & Cells(rows.count, 1).end(xlup).row)
    
    .formulaLocal = "=Zufallszahl()"
    .formula = .value
    End with

    That's all
    Gruß Daniel
    Anzeige
    AW: Zufällig jemanden einen Partner zuordnen (Wichteln)
    31.10.2023 19:03:25
    Piet
    Hallo

    wenn ein Laufzeitfehler kommt muss eine Zeile gelb markiert sein. Welche ist es??

    mfg Piet
    AW: Zufällig jemanden einen Partner zuordnen (Wichteln)
    30.10.2023 20:37:19
    Piet
    Nachtrag: das Makro kann beliebig viele Zeilen nach unten verarbeiten, weit mehr als 128 Zeilen!
    AW: Zufällig jemanden einen Partner zuordnen (Wichteln)
    31.10.2023 13:55:45
    Kaenny
    Irgendwie bin ich anscheinend zu doof dazu. Habe ein Makro geöffnet und dort eingefügt, wenn ich jetzt auf ausführen klicke, bekomme ich Syntax Fehler.
    Anzeige
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Zufällige Partnerzuordnung in Excel für Wichteln


    Schritt-für-Schritt-Anleitung

    Um zufällig Partner für ein Wichteln zuzuordnen, kannst Du ein einfaches Makro in Excel verwenden. Befolge diese Schritte:

    1. Öffne Excel und erstelle eine neue Tabelle. In Spalte A (A2 bis A128) gib die Namen der Teilnehmer ein.

    2. Aktiviere die Entwicklertools:

      • Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“.
      • Aktiviere das Kontrollkästchen für „Entwicklertools“.
    3. Füge ein Modul hinzu:

      • Klicke auf „Entwicklertools“ > „Visual Basic“.
      • Rechtsklicke im Projektfenster und wähle „Einfügen“ > „Modul“.
    4. Füge den folgenden Code ein:

      Sub Zufall_ausfüllen()
         Dim AC As Range, x, lz1 As Long
         lz1 = Cells(Rows.Count, 1).End(xlUp).Row
         Range("B:B").ClearContents
         Randomize  'Zufall aktivieren
         For Each AC In Range("A2:A" & lz1)
      neu:    x = CInt(Rnd * lz1 - 1)
             'Keine Wiederholungen oder x=AC Wert
             If x < 1 Or x > lz1 Then GoTo neu
             If Cells(x + 1, 2) > Empty Then GoTo neu
             If Cells(x + 1, 2) = AC.Value Then GoTo neu
             Cells(x + 1, 2) = AC.Value
         Next AC
         'MsgBox "Fertig"
      End Sub
    5. Schließe den VBA-Editor und gehe zurück zu Excel.

    6. Füge einen Button hinzu:

      • Klicke auf „Entwicklertools“ > „Einfügen“ > „Button (Formularsteuerung)“.
      • Ziehe den Button auf das Arbeitsblatt und weise das Makro Zufall_ausfüllen zu.
    7. Klicke auf den Button, um die Partnerzuordnung durchzuführen.


    Häufige Fehler und Lösungen

    • Syntaxfehler beim Ausführen des Makros: Überprüfe, ob Du den Code korrekt kopiert hast. Achte auf die korrekte Verwendung von Dim, If und Next.
    • Laufzeitfehler: Stelle sicher, dass in Spalte A keine leeren Zellen zwischen den Namen sind. Alle Namen sollten aufeinander folgen.
    • Keine Zuordnung: Wenn das Makro nicht korrekt funktioniert, überprüfe, ob die Teilnehmeranzahl in Spalte A stimmt und keine Namen doppelt vorhanden sind.

    Alternative Methoden

    Falls Du kein Makro verwenden möchtest, kannst Du auch die Funktion ZUFALLSZAHL() in Kombination mit INDEX() und VERGLEICH() nutzen. Hier ein Beispiel:

    1. In Zelle B2 kannst Du folgendes eingeben:
      =INDEX(A$2:A$128,VERGLEICH(ZUFALLSZAHL(),ZUFALLSZAHL()*(ZÄHLENWENN(B$1:B1,A$2:A$128)=0),0))
    2. Ziehe diese Formel nach unten, um die Zuordnung für alle Teilnehmer zu erstellen.

    Beachte, dass diese Methode bei jedem Neuladen des Arbeitsblattes die Zuordnung ändert.


    Praktische Beispiele

    • Beispiel 1: Du hast 10 Teilnehmer in Spalte A (A2 bis A11). Nach Ausführung des Makros sollte in Spalte B jedem Teilnehmer ein anderer Teilnehmer zugeordnet werden, ohne dass jemand sich selbst zugeordnet wird.
    • Beispiel 2: Du kannst die Ergebnisse in Spalte B auch farblich formatieren, um sie besser lesbar zu machen.

    Tipps für Profis

    • Backup erstellen: Erstelle immer eine Sicherungskopie Deiner Excel-Datei, bevor Du mit Makros arbeitest.
    • Erweiterte Funktionen: Du kannst das Makro erweitern, um die Zuordnung bei jedem neuen Teilnehmer automatisch zu aktualisieren oder zusätzliche Bedingungen einzuführen.
    • Benutzerfreundlichkeit: Füge eine Eingabemaske hinzu, um die Namen einfacher einpflegen zu können.

    FAQ: Häufige Fragen

    1. Frage Wie kann ich sicherstellen, dass keine Namen doppelt zugeordnet werden?

    Antwort: Das oben gegebene Makro stellt sicher, dass keine Namen doppelt zugeordnet werden, indem es überprüft, ob der Name bereits in der Zielspalte vorhanden ist.

    2. Frage Kann ich das Makro auch in Excel Online verwenden?

    Antwort: Makros sind in Excel Online nicht unterstützt. Du musst die Desktop-Version von Excel verwenden, um das Makro auszuführen.

    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