Clever-Excel-Forum

Normale Version: Verteilung von limitierter Anzahl Produkte auf Personen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe folgendes Problem:

Für ein Event/Gewinnspiel versuche ich mit Hilfe von Excel eine Anzahl von Artikeln auf eine Anzahl von Menschen zu verteilen. Hier die generellen Fakten:


  1. Es gibt 100 Personen und 50 verschiedene Artikel (jeder Artikel ist 1-3 mal vorhanden, sodass es Gesamt 100 Artikel gibt)
  2. Jede Person hat 3 Wünsche für Artikel (bspw: Präferenz 1: Artikel Nummer 27, Präferenz 2: Artikel Nummer 20, Präferenz 3: Artikel Nummer 45)
  3. Der Wunsch jeder Person ist unterschiedlich gewichtet. Als erstes soll der Wunsch von der wichtigsten Person beachtet werden. Dann Person mit der Wichtigkeit 2, usw.
Ich habe also eine List mit 100 Namen die jeweils eine Wichtigkeit zugeordnet haben. Jede Person hat 3 gewählte Produkte. 
[img]blob:https://www.clever-excel-forum.de/2a0bc4df-9359-44ad-8632-42b6d941a21b[/img]
Die Produkte und deren verfügbare Anzahl habe ich einer separaten Tabelle.
[img]blob:https://www.clever-excel-forum.de/a44f118c-66c9-4e32-8374-dea6a08b6534[/img]

Was ich bisher versucht habe ist folgendes:
Mittels IF Formel in Kombination habe ich geschaut ob noch Artikel verfügbar sind:
=IF(VLOOKUP(C2;K:M;2)>=1;C2;IF(VLOOKUP(D2;K:M;3)>=1;D2;IF(VLOOKUP(E2;K:M;3)>=1;E2)))

Das Inventory habe ich dann versucht basierend darauf zu aktualisieren. Dabei kommt es jedoch zu einem Selbst-Referenz Problem (was auch logisch ist). Ich habe allerdings keine Lösung gefunden, wie ich diese Selbst-Referenz verhindern kann.

Ich habe das Dokument auch mal angehangen.

Vielen Dank schon einmal fur eure Hilfe!
Der 3. Wunsch des Ranglistenhöheren (falls nur noch der erfüllbar) ist vermutlich auch vorrangig zu erfüllen vor dem 1. Wunsch seines Nachfolgers?

Recht einfach sollte das ganze mit VBA funktionieren.

Mit Formeln (ohne VbA)  muss man bei der Fragestellung etwas umformulieren.

(ich weiß, diese Antwort ist auch nicht besser als "sollte mit PQ machbar sein". Aber immerhin mit Rückfrage)
Danke für die schnelle und gute Antwort!


Zitat:Der 3. Wunsch des Ranglistenhöheren (falls nur noch der erfüllbar) ist vermutlich auch vorrangig zu erfüllen vor dem 1. Wunsch seines Nachfolgers?

In der Tat, es geht erst nach Ranglistenhöhe.
Mit VBA habe ich leider noch nicht gearbeitet, ich muss mal schauen ob ich dafür noch die Zeit finde vor dem Event. Hast du vielleicht ein paar Schlagworte die dir spontan einfallen, mit denen das Problem lösbar sein sollte? Eine for loop oder so etwas?
[attachment=25170
  • mit 10 statt 100 und 5 statt 50 im Modell verkleinert
  • Formellösung ohne VBA
  • möglicherweise fehlerhaft, da nicht durchgetestet
Das ist großartig, vielen vielen Dank!
Hallo k...,

Zitat:In der Tat, es geht erst nach Ranglistenhöhe.

Dann ist die Formel für F2 sehr einfach: "=C2" . Aber warum soll der Chef drei Wünsche ausfüllen? Er kann doch direkt sagen ich will das.
Ab F3 könnte eine Formel so aussehen:
Code:
=WENN(SUMMENPRODUKT(($F$2:F2=C3)*1)<SVERWEIS(C3;$K$2:$L$10;2;FALSCH);C3;WENN(SUMMENPRODUKT(($F$2:F2=D3)*1)<SVERWEIS(D3;$K$2:$L$10;2;FALSCH);D3;WENN(SUMMENPRODUKT(($F$2:F2=E3)*1)<SVERWEIS(E3;$K$2:$L$10;2;FALSCH);E3;"kein Wunsch vorhanden")))
(03.07.2019, 10:44)kraitx3 schrieb: [ -> ]Das ist großartig, vielen vielen Dank!

Leider nicht, da der Eintritt der WVERWEIS-Formel zu 0 (statt irgendeinem willkürlichen Artikel) führt. Da müsste man noch mal ran:

E2: =WENN(ZÄHLENWENN(G2:P2;B2);B2;WENN(ZÄHLENWENN(G2:P2;C2);C2;WENN(ZÄHLENWENN(G2:P2;D2);D2;MAX(G2:P2))))

Somit bekommt die Person nun einen unerwünschten Artikel statt gar keinen aufgedrückt. Du kannst also auswählen, was gelten soll.