Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
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
Inhaltsverzeichnis

Verteilung

Verteilung
20.01.2009 20:49:00
Claudia
Hallo zusammen,
leider habe ich mal wieder eine Herausforderung, die ich ohne Eure Hilfe nicht meistern kann. Ich habe bis gerade erst einmal eine Tabelle erstellt, die mir ein Chef aufs Auge gedrückt hat. :-(

Die Datei https://www.herber.de/bbs/user/58632.xls wurde aus Datenschutzgründen gelöscht

Im Reiter Verteilung gibt es unter Gesamt die Anzahl an Vorgängen pro Aktentyp, die verteilt werden soll. Die Gesamtmenge ist in G1 (gelb und veränderbar), die Anzahl der Gruppen in B1 (ist veränderbar).
Die Gesamtmenge soll jetzt gleichmässig auf die Anzahl der Gruppen verteilt werden. Wie man in dem Beispiel sieht, wären das Aktentypen 1,5 13 und 20 (insgesamt also 8073 Vorgänge).
Steht im Feld J1 eine Null, so soll eine gleichmässige Aufteilung erfolgen (jede Gruppe bekommt pi mal Daumen von jedem Aktentyp die gleiche Anzahl). Steht dort eine Zahl größer Null z.B. 100 (könnte auch was anderes stehen), so soll eine CLusterung erfolgen. Zuerst wird vom Aktentyp 1 jede Gruppe mit 100 bedient. Die Gruppe 9 würde 85 bekommen und dann geht es mit dem nächsten Aktentyp weiter.
Die VOrgänge die jede Gruppe bekommt, soll dann in der entsprechende Spalte/Zeile eingetragen werden.
Wichtig ist: Jede Gruppe soll die gleiche Anzahl von Vorgängen bekommen. Bei 8073 würde das bei 22 Gruppen also 366 machen. Der Rest des letzten Aktentypes fällt über den Tisch und wird nicht verteilt.
Ich frage jetzt mal in die Runde. Kann mir hier jemand VBA-mässig weiterhelfen?
Vielen vielen vielen vielen vielen vielen vielen vielen vielen vielen vielen vielen vielen Dank!
Liebe Grüße
Claudia

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verteilung
21.01.2009 02:47:00
Oberschlumpf
Hi Claudia
Meinst du so:
https://www.herber.de/bbs/user/58640.xls
Ich hab es so verstanden und gelöst.
Wenn in Clusterung (J1) = 0, dann werden alle Aktentypen (AT) so gut es geht, gleichmäßig verteilt.
Aber...
Um bei 22 Gruppen und die vorgegebene Anzahl von AT die Quersumme von 366 zu erreichen, werden unter allen Einträgen DIE restlichen AT angezeigt, die übrig bleiben.
Das passt aber leider nicht zu deiner "Vorgabe"
Der Rest des letzten Aktentypes fällt über den Tisch und wird nicht verteilt.
Nach der Formulierung dieser "Vorgabe" müsste der Rest aus AT1 zu AT2 wechseln, dann Rest aus AT2 zu AT3, usw...damit eben NUR der Rest aus dem letzten AT übrig bleibt.
Nach meinem Verständnis wäre das so aber falsch, da ja AT1 nicht AT2 ist - und somit AT1 in AT2 nix zu suchen hat, oder?..*unsicher guck* :-)
Nächste "Vorgabe"
Wenn in Clusterung = 100 oder anderer Wert größer 0, dann werden alle AT so lange mit z Bsp 100 auf die Gruppen verteilt, bis Rest kleiner 100 - der Rest wird dann der nächsten freien Gruppe zugeordnet.
Vorgensweise für dich in der Bsp-Datei.
Gib mal zuerst in J1 0 ein. Da siehst du das erste Ergebnis.
Und dann musst du leider immer zuerst den Wert für Gruppen in B1 eingeben, damit der ganze Verteilungsbereich gelöscht wird, und erst dann in J1 die Eingabe für Clusterung.
Wenn ich versuche, im Code für Clusterung den ganzen Verteilungsbereich zu löschen, spielt leider die Datei verrückt, weil immer wieder deine SummeFarbig-Funktion gestartet wird. Das konnte ich leider nicht verhindern.
Ach ja...wenn du einen Wert für Gruppen eingibst, werden ale bestehenden Gruppen gelöscht, und es erscheinen so viele Gruppen wie angegeben.
So, hoffe es klappt. Aber wenigstens hast du ja vielleicht schon mal einen Ansatz, wie es funktionieren könnte.
Bin auf deine Antwort neugierig.
Ciao
Thorsten
Anzeige
AW: Verteilung
21.01.2009 08:00:00
Claudia
Hallo lieber Oberschlumpf,
das ist eine tolle Programmierung geworden und wenn ich Zeit sehe, wann Du geantwortest hast, dann schäme ich mich, weil Du Dir die Nacht um die Ohren geschlagen hast.
Es tut mir auch leid, dass meine Farbsummierung Dir das Leben schwer gemacht hat. :-)
Die Aufteilung der Vorgänge bei gleicher Verteilung klappt bestens. Wenn geclustert wird, da habe ich eine Nachfrage bzw. da besteht wohl noch ein Problem.
Wenn ich beispielsweise 1755 Vorgänge auf 19 Gruppen verteile (Clusterung 50 Vorgänge), dann bekommt die erste Gruppe INSGESAMT 250 Vorgänge, die zweite 173, die dritte 150, die vierte 120.....die letzten Gruppen gehen leer aus.
Kannst Du da noch was machen, wenn Du ausgeschlafen hast? :-)
Ich soll es jedenfalls nach meinem Chef schaffen, dass auch bei einer Clusterung z.B. von 50 Vorgängen jede Gruppe die gleiche Anzahl an GESAMTVORGÄNGEN bekommt.
Ich sage tausend Dank!
Liebe Grüße
Claudia
Anzeige
AW: Verteilung
21.01.2009 11:52:00
Oberschlumpf
Moin Claudia
Bin wieder wach...und die frühe Uhrzeit war kein Prob, weil ich unterwegs war...deswegen so früh/spät ;-)
Aber das mit dem Clustern hab ich so noch nicht verstanden, wie du, bzw dein Chef es gern hätte.
Hier mal eine Grafik:
Userbild
(hab die meisten unwichtigen 0-Spalten ausgeblendet, damit es nicht zu breit wird)
So, wenn z Bsp bei 22 Gruppen eine Clusterung von 400 vorgenommen wird, und damit nach deinen Worten gemeint ist, dass so lange jede Gruppe 400 bekommen soll, bis nur noch weniger als 400 vorhanden sind, und die restlichen unter 400 die nächste freie Gruppe erhalten soll, dann ist es doch gar nicht möglich, alles so zu verteilen, dass jede Gruppe gleich viel AT erhält.
Das ist doch immer abhängig von der Gesamtanzahl des jeweiligen AT.
Oder aber ich habe es gaaar nicht verstanden, und du musst es mir bitte noch mal erklären.
Ach ja...bitte verrat mir auch gleich, welche Zahlen ich - ich vermute im Sheet "Rückstand" - wo eintragen muss, um auf "deine" Zahl 1755 zu kommen?
So...bis später :-)
Ciao
Thorsten
Anzeige
AW: Verteilung
21.01.2009 13:32:00
Claudia
Hallo lieber Oberschlumpf,
sorry, dass ich Dich abgehängt habe. Habe jetzt meine Datei mit dem Beispiel hochgeladen:
https://www.herber.de/bbs/user/58653.xls
In diesem Beispiel sollen 1785 Vorgänge, auf 19 Gruppen verteilt werden. Clusterung = 50
Nach dem jetzigen Makro passiert folgendes:
Gruppe 1 bekommt 130 Vorgänge
Gruppe 2 bekommt 100 Vorgänge
Gruppe 18 bekommt 55 Vorgänge
Gruppe 19 bekommt keine Vorgänge
Mein Chef will, dass die 1785 anzahlmässig gerecht aufgeteilt werden. Jede Gruppe soll also in der Gesamtzahl die gleiche Menge bekommen.
Wenn man dieses Beispiel nimmt dann, müsste die Gruppe 18 vom Aktentyp 1 noch 15 und die Gruppe 19 die restlichen 45 Vorgänge bekommen. Und dann geht es weiter mit dem nächsten Aktentyp.
Sichergestellt werden muss dabei, dass jede Gruppe die gleiche Anzahl bekommen. Man kann also nicht bis zum Schluss clustern, weil sonst die Menge unterschiedllich ist. Vielleicht könnt man ja prüfen (19 Gruppen x 50 Vorgänge = 950 Vorgänge - wird diese "Restmenge" unterschritten, dann muss ohne Clusterung aufgeteilt werden).
Verständlich? Ist eigentlich viel zu schwer zum erklären. :-(
Liebe Grüße
Claudia
Anzeige
AW: Verteilung
21.01.2009 14:02:13
Oberschlumpf
Hi Claudia
Wenn man dieses Beispiel nimmt dann, müsste die Gruppe 18 vom Aktentyp 1 noch 15 und die Gruppe 19 die restlichen 45 Vorgänge bekommen. Und dann geht es weiter mit dem nächsten Aktentyp.
Das verstehe ich nicht, weil....
...es gibt vom Aktentyp 1 (AT) 885
...aufgeteilt wird nach der Clusterung 50, was ja bedeutet, dass jede Gruppe so lange 50 erhält, bis nur noch weniger als 50 übrig sind
DAS bedeutet es doch, oder hab ich dich da falsch verstanden?
(diese Frage bitte unbedingt beantworten)
Wenn ich damit Recht habe, dann verteile ich
17 x 50 = 850 Rest 35
Wo soll ich bitte für Gruppe 18 aus AT 1 jetzt noch zusätzliche 15, und - noch unverständlicher - noch mal zusätzliche 45 für Gruppe 19 hernehmen, da ich doch insgesamt NUR 885 habe?
Wobei du ja von restlichen 45 schreibst?!!?
Wo bleiben denn wann in AT 1 45 über?
(entweder stehe ICH auf dem Schlauch, oder dein Chef hat nen Denkfehler :-) )
Außerdem würde dann ja die Clusterung 50 für Gruppe 19 nicht stimmen, weil ja nur 45.
Freue mich auf deine Antwort
Ciao
Thorsten
Anzeige
AW: Verteilung
21.01.2009 15:07:00
Claudia
Manno, Du bist echt gemein.
Die Spielregeln oder Vorgaben meines Chefs sind für "ihn" klar.
1) Alle Gruppen erhalten die gleiche Anzahl an Vorgängen
2) bei einer Clusterung muss lediglich ÜBER alle Aktentypen eine Clusterung erfolgen
Also Dein Beispiel folgend würden beim Aktentyp 1 die Gruppen 1 - 17 jeweils 50 bekommen. Die Gruppe 18 erhält dann den Rest (15) und füllt die weiteren 35 Vorgänge dann beim nächsten Aktentyp auf.
Weißt Du denn was ich meine? Was würdest Du denn machen?
Liebe Grüße
Claudia
ich weiß nicht weiter
21.01.2009 17:04:00
Oberschlumpf
Sorry, aber ich komm da nicht hinter...
Also Dein Beispiel folgend würden beim Aktentyp 1 die Gruppen 1 - 17 jeweils 50 bekommen. Die Gruppe 18 erhält dann den Rest (15) und füllt die weiteren 35 Vorgänge dann beim nächsten Aktentyp auf.
1. Nach meinem Bsp hat Gruppe 18 restliche 35 Vorgänge und nicht wie du schreibst 15.
Welche 15 Vorgänge meinst du?
2. und von welchen35 weiteren Vorgängen sprichst du?
es gibt für AK 1 nur 1x 35 restliche Vorgänge und fertig - aber du siehst da nicht 35 sondern nur 15?!!!?!!
Sorry Claudia, ich kann dir nicht weiter folgen.
Daher bin ich hier raus, und lass deine Frage für weitere mögliche Helfer offen.
Ciao
Thorsten
Anzeige
Schlumpfi :-)
21.01.2009 18:32:49
Claudia
ICH habe mich verrechnet. Deswegen sagt mein Chef ja auch Excel soll das machen. :-)
Du hast vollkommen recht. 17 * 50 = 850 (885 Vorgänge haben wir - also bleiben für die Gruppe 18 noch 35 von diesem Typ). Und dann wird diese Gruppe mit 15 Vorgängen vom nächsten Typ aufgefüllt.
Kannst Du mir verzeihen?
Verteilung
21.01.2009 18:58:00
Claudia
Hallo Schlumpfi, hallo die anderen,
ich habe das Problem nach Rü mit meinem Chef in der Datei im Reiter "Verteilung manuell" dokumentiert.
https://www.herber.de/bbs/user/58667.xls
Es wäre schön, wenn mir jemand helfen könnte.
Viele vielen Dank!
Liebe Grüße
Claudia
Anzeige
AW: nur erst mal Info, dass ich dran bin
21.01.2009 20:04:23
Oberschlumpf
Hi Claudi
Ich glaub, dass ich es nun verstanden habe - denn was du vorher nicht erwähntest (oder ich vielleicht auch nicht verstand :-) )ist, dass bei Clusterung der letzte AK NICHT dem Wert der Clusterung entsprechen muss.
Ich hab jetzt noch keine Lösung, wollte dir aber hiermit nur "sagen", dass ich es wieder versuche.
Ciao
Thorsten
Oberschlumpf,
21.01.2009 21:49:00
Claudia
ich danke Dir. Vermutlich habe ich mich sehr falsch ausgedrückt (und auch noch falsch gerechnet :-) ).
Schlag Dir aber nicht die Nacht um die Ohren. :-)
AW: Verteilung - Lösungsvorschlag
22.01.2009 00:56:41
Erich
Hallo Claudia,
vielleicht habe ich nicht alles richtig kapiert, aber vielleicht kannst du das ja gebrauchen.
Ich habe auf der Grundlage von Thorstens Code mal etwas weiter gebastelt
(und mich damit hier eingemischt - sorry, Thorsten!)
Schauts euch mal an: https://www.herber.de/bbs/user/58672.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Lösungsvorschlag gekürzt
22.01.2009 09:17:54
Erich
Hi nochmal,
hier eine kürzere Fassung der Verteilprozedur:

Sub sbVerteil()
Dim intClu As Integer, intAnzGr As Integer
Dim intTeil As Integer, intRest As Integer, zz As Integer, cc As Integer
Dim intZw As Integer, intAnzAT As Integer, intApG As Integer
Dim arrG() As Integer, intRestAT As Integer
With Sheets("Verteilung")
intAnzGr = .Cells(1, 2)
ReDim arrG(1 To intAnzGr)
intClu = .Cells(1, 10)
intApG = Fix(.Cells(1, 7) / intAnzGr)
intAnzAT = 25         ' .Cells(4, .Columns.Count).End(xlToLeft).Column
For zz = 1 To intAnzGr
arrG(zz) = intApG    ' Restkapazität der Gruppe
Next zz
' ------------------------ ohne Cluster oder über Clustergröße zu verteilen
For cc = 2 To intAnzAT
intRestAT = .Cells(4, cc).Value
If intRestAT > 0 Then
If intRestAT >= intAnzGr * intClu Then
intTeil = Int(intRestAT / intAnzGr)
For zz = 1 To intAnzGr
.Cells(zz + 4, cc).Value = intTeil
arrG(zz) = arrG(zz) - intTeil
intRestAT = intRestAT - intTeil
Next zz
.Cells(zz + 4, cc).Value = intRestAT
End If
End If
Next cc
' ------------------------------------------- mit Clustergröße zu verteilen
zz = 1
For cc = 2 To intAnzAT
intRestAT = .Cells(4, cc).Value
If intRestAT  0
intTeil = Application.Min(arrG(zz), intClu, intRestAT)
If Not IsEmpty(.Cells(zz + 4, cc)) Then
.Cells(intAnzGr + 5, cc).Value = intRestAT
intRestAT = 0
Else
.Cells(zz + 4, cc).Value = intTeil
arrG(zz) = arrG(zz) - intTeil
intRestAT = intRestAT - intTeil
End If
If intRestAT > 0 Or arrG(zz) = 0 Or intTeil >= intClu Then
zz = zz + 1
If zz > intAnzGr Then zz = 1
End If
Wend
End If
Next cc
' --------------------------------------------------------- Reste aufteilen
For zz = 1 To intAnzGr
intRestAT = Application.Sum(Range(.Cells(zz + 4, 2), .Cells(zz + 4, intAnzAT)))
If intRestAT  0 Then
intTeil = Application.Min(intApG - intRestAT, .Cells(intAnzGr + 5, cc))
.Cells(zz + 4, cc) = .Cells(zz + 4, cc) + intTeil
.Cells(intAnzGr + 5, cc) = .Cells(intAnzGr + 5, cc) - intTeil
intRestAT = intRestAT + intTeil
End If
Next cc
End If
Next zz
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Verteilung - Lösungsvorschlag
22.01.2009 11:56:02
Oberschlumpf
Hallo Erich!
Danke!
Nein, kein Sorry nötig - Weil du bist ja schon mal weiter gekommen als ich.
Und wie vor Kurzem jemand schrieb: "Nur gemeinsam kommen wir weiter" ;-)
Und ,al sehen, was Claudia dazu sagt.
Ciao
Thorsten
Juhu :-)
22.01.2009 17:44:03
Claudia
Hallo Erich, hallo Oberschlumpf,
komme erst jetzt dazu, da mich mein Chef gequält hat und ich an langen Besprechungen teilnehmen mustte.
Also was soll ich sagen: die Umsetzung von Erich ist perfekt. :-)
Vielen vielen Dank für Eure Mühe und dass Ihr Euch beide die Nacht um die Ohren geschlagen habt.
Echt toll!
Liebe Grüße
CLaudia

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige