Verteilung von limitierter Anzahl Produkte auf Personen
#1
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!


Angehängte Dateien
.xlsx   Event.xlsx (Größe: 9,47 KB / Downloads: 9)
Top
#2
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)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#3
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?
Top
#4

.xlsx   190703 CEF Thread-Verteilung-von-limitierter-Anzahl-Produkte-auf-Personen.xlsx (Größe: 11,74 KB / Downloads: 4)  
  • mit 10 statt 100 und 5 statt 50 im Modell verkleinert
  • Formellösung ohne VBA
  • möglicherweise fehlerhaft, da nicht durchgetestet
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • kraitx3
Top
#5
Das ist großartig, vielen vielen Dank!
Top
#6
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")))


Angehängte Dateien
.xlsx   Event.xlsx (Größe: 10,79 KB / Downloads: 9)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • kraitx3
Top
#7
(03.07.2019, 11: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.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste