Anzeige
Archiv - Navigation
1520to1524
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

Zahlen 1-100 gleichmäßig auf Gruppen verteilen

Zahlen 1-100 gleichmäßig auf Gruppen verteilen
25.10.2016 22:57:15
Sev
Hallo,
ich möchte die Zahlen von 1-100 nach einem bestimmten Schlüssel, aber gleichmäßig auf 5 Gruppen verteilen, zB
Gruppe 1: 8 Zahlen
Gruppe 2: 10 Zahlen
Gruppe 3: 51 Zahlen
Gruppe 4: 12 Zahlen
Gruppe 5: 20 Zahlen
Gleichmäßig meint dabei, dass nicht Gruppe 1 die Zahlen 1-15, dann Gruppe 2 16-21 usw erhält, sondern die Zahlen von 1-100 quasi reihum verteilt werden. Grundsätzlich sollte für eine Gruppe immer der größtmögliche Abstand zwischen zwei zugewiesenen Zahlen genutzt werden. Beispiel: Gruppe 2 mit 10 Zahlen - idealerweise 1, 11, 21, 31 usw. Praktisch (per Hand) führt das aber irgendwann zu Kollisionen mit anderen Gruppen. Ich habe ein VBA-Modul, dass mir kollisionsfrei für die Gruppen (irgendwelche) Zahlen zwischen 1-100 ausgibt, aber dabei kann es sein, dass eine Gruppe vier aufeinanderfolgende Zahlen erhält. Genau das will ich vermeiden. Auf das Makro habe ich gerade keinen Zugriff, dass poste ich morgen noch einmal.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen 1-100 gleichmäßig auf Gruppen verteilen
26.10.2016 11:02:28
Sev
Hier das Makro:
Sub verteilen_neu()
Dim BereichVerteilung As Range
Dim Verteilung
Dim VerteilungIst
Dim VerteilungSoll
Dim VertGes As Integer
Dim AnzahlVerteilt As Integer
Dim AnzahlAkten As Integer
Dim i As Integer
Dim Obergrenze As Integer
Dim Untergrenze As Integer
Set BereichVerteilung = Range("A2:F2") 'Der Bereich in dem der Verteilungsschlüssel steht.
'In der nächsten Reihe wird die Anzahl der zu verteilenden Akten eingetragen
BereichVerteilung.Offset(3).Resize(500, BereichVerteilung.Columns.Count).ClearContents
Verteilung = BereichVerteilung
Verteilung = WorksheetFunction.Transpose(Verteilung)
Verteilung = WorksheetFunction.Transpose(Verteilung)
VertGes = WorksheetFunction.Sum(BereichVerteilung)
For i = LBound(Verteilung) To UBound(Verteilung)
Verteilung(i) = Verteilung(i) / VertGes
Next
VerteilungIst = BereichVerteilung.Offset(1, 0)
VerteilungIst = WorksheetFunction.Transpose(VerteilungIst)
VerteilungIst = WorksheetFunction.Transpose(VerteilungIst)
VerteilungSoll = Verteilung
Untergrenze = InputBox("verteilen von: ")
Obergrenze = InputBox("verteilen bis: ")
AnzahlAkten = Obergrenze - Untergrenze + 1
AnzahlVerteilt = WorksheetFunction.Sum(BereichVerteilung.Offset(1, 0))
VertGes = AnzahlAkten + AnzahlVerteilt
For i = LBound(Verteilung) To UBound(Verteilung)
VerteilungSoll(i) = Verteilung(i) * VertGes
Verteilung(i) = Verteilung(i) * AnzahlAkten
Next
Dim sz As String
Dim zz As Integer
Dim zuVerteilen As Integer
Dim letzteZeile As Long
Dim PlatzGefunden As Boolean
sz = ""
zuVerteilen = AnzahlAkten
Do
Do
zz = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
Loop While InStr(1, sz, "#" & zz & "#") > 0
sz = sz & "#" & zz & "#"
i = 1
PlatzGefunden = False
Do
If Verteilung(i) >= 1 Then 'so lang eine normale Verteilung möglich ist wird normal  _
verteilt
letzteZeile = BereichVerteilung.Cells(i).Offset(500).End(xlUp).Row + 1
If letzteZeile  UBound(Verteilung) And Not PlatzGefunden Then 'ist eine Verteilung nicht mö _
glich wird der erste mit der größten differenz zum soll belastet.
Dim mI As Integer, Max As Double
Max = VerteilungSoll(1) - VerteilungIst(1)
mI = 1
For i = 2 To UBound(VerteilungSoll)
If Max  0
BereichVerteilung.Offset(1) = VerteilungIst
End Sub

Anzeige
AW: Zahlen 1-100 gleichmäßig auf Gruppen verteilen
26.10.2016 14:55:00
Michael
Hi,
die Gruppe 3 solltest Du als erstes bearbeiten - aber sag, wie willst Du 51 Zahlen auf 1-100 verteilen, ohne daß 2 nebeneinander liegen? 51 ungerade Zahlen gingen bis 101, gerade bis 102.
Gruß,
M.
AW: Zahlen 1-100 gleichmäßig auf Gruppen verteilen
26.10.2016 16:14:07
Sev
Insoweit war meine Frage unklar - die Zahlen sollen nicht benachbart sein, soweit das möglich ist. Ja, ich gehe auch davon aus, dass ich zunächst der Gruppe mit dem größten Anteil aus dem freien Bereich "deren" Zahlen zuteile und dann aus dem dann noch freien Bereich die anderen Gruppen bediene. Es geht aber - ganz praktisch - um die Verteilung von Arbeit anhand von chronologisch eingehenden Aufträgen ("Akten"). Wenn ich die Gruppe 3 zuerst bediene, könnte ich zB jede 2 Ziffer (sagen wir: jede ungerade) plus eine Folgeziffer der Gruppe zuteilen. Dann habe ich für alle anderen Gruppen noch 49 gerade Ziffern zwischen 1-100.
Es wäre aber nicht sinnvoll, der Gruppe 3 mit 8 Ziffern zB die Folge "2, 4, 6, 8, 12, 16, 18, 20" zuzuteilen, weil diese dann in einem kurzen Zeitraum - dem Eingang von 20 Akten - bereits die Arbeit zugeteilt bekommt, die sie insgesamt auf einen Eingang von 100 Akten erledigen soll, weil dann erst Überlast und dann Leerlauf herrscht.
Deswegen denke ich, dass man für jede Gruppe den optimalen Abstand der zugewiesenen Zahlen errechnen muss - also zB bei 20 aus 100 jede 5, bei 8 aus 100 jede 12,5 usw. und dann prüfen, ob mit den noch freien Zahlen diese optimalen Abstände bedient werden können. Und wenn dies nicht der Fall ist, weil eine bestimmte Zahl für zwei Gruppen der jeweils "optimale" Abstand wäre, müsste es eine Möglichkeit geben, die Kollision zu entscheiden - also zB Vorrang für die Gruppe, die mehr Zahlen zugewiesen bekommen soll.
Danke für die Beteiligung.
Anzeige
Zahlen 1-100 gleichmäßig auf Gruppen verteilen
27.10.2016 16:36:03
Michael
Hi,
anbei eine allg. und eine spezielle Annäherung an das Problem: https://www.herber.de/bbs/user/109062.xlsm
Die Idee ist, die Zahlen erst mal auf einen "gespreizten" Bereich zu verteilen (da gibt es weniger Gerangel um eine bestimmte Position) und diesen dann wieder einzudampfen.
Die allg. Version ist sehr variabel; Kernstück ist eigentlich nur ein bestimmter Bereich, der eingelesen wird. Bei der Gruppe 3 sind aber doch einige Aufträge auf nacheinanderfolgende Zahlen verteilt.
Die spezielle Version verteilt besser, setzt aber voraus, daß 51 immer 51 ist.
Schöne Grüße,
Michael
Schöne Grüße,
Michael
Anzeige
AW: Zahlen 1-100 gleichmäßig auf Gruppen verteilen
27.10.2016 19:29:26
Sev
Vielen Dank! Ich teste das morgen!
AW: Zahlen 1-100 gleichmäßig auf Gruppen verteilen
31.10.2016 16:29:40
Sev
So,
ich bin jetzt endlich mal zum Testen gekommen und bedanke ich mich nochmals ganz herzlich. Ich benötige die "allg"-Version, weil sich die Anteile über das Jahr stetig verändern. Mit der geringen Anzahl direkter "Folgeaufträge" kann ich leben bzw. diese manuell justieren.
:thumbsup:
very nice, danke für die Rückmeldung
31.10.2016 18:05:43
Michael
und schöne Grüße,
Michael

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige