Automatisches einsortieren in Gruppen
#1
Hallo zusammen,
ich habe eine Liste mit mehreren Verbrauchern, die ich gerne in Gruppen einordnen möchte. Mein Ziel ist es, die Gruppen automatisch so zu erstellen, dass jede Gruppe gleich groß ist, unabhängig von der Anzahl der Verbraucher in der Liste.
Ich habe bereits versucht, dies manuell zu tun, aber das ist sehr zeitaufwändig. Gibt es eine Möglichkeit, dieses Vorgehen in Excel zu automatisieren? Ich würde mich über eine Lösung oder einen Hinweis freuen.
Anbei habe ich einige Screenshots beigefügt, die meine derzeitige Liste und das gewünschte Ergebnis zeigen.
Vielen Dank im Voraus für eure Hilfe!


Angehängte Dateien Thumbnail(s)
       
Antworten Top
#2
Hi,

ich würde vor die Datentabelle eine fortlaufende Nummer als Spalte einfügen und in einer Gruppenverteilung auf diese Nummern s-verweisen.

Wenn du eine Datei hochlädst könnten konkretere Formeln folgen, aber vielleicht hilft dir der Hinweis schon.
Antworten Top
#3
Jau klingt gut, lade mal eben die Datei hoch.


Angehängte Dateien
.xlsx   Gruppen berechnen_HART.xlsx (Größe: 16,69 KB / Downloads: 10)
Antworten Top
#4
Hallo E...,

A) Solver
Eine Zuordnung der Verbraucher zu Gruppen, deren Leistungssummen möglichst gleich groß sind, löst man in Excel mit dem Solver.
In der Anlage habe ich im Blatt Zuordnung für deine Fragestellung ein Solverproblem eingerichtet.
Da das Problem nicht kontinuierlich ist, ist nicht sichergestellt, dass in jedem Lauf das optimale Ergebnis gefunden wird. Ich erwarte aber in jedem Lauf ein gutes Ergebnis.
Du solltest den Solver mehrmals aufrufen und das jeweils beste Ergebnis sichern.

B) Makro
Bei der aktuellen Anzahl der Verbraucher ist es wahrscheinlich auch möglich mit einem Makro (mit brutaler Durchsuchung aller Zuordnungsmöglichkeiten) in vertretbarer Zeit immer das beste Ergebnis zu berechnen.
Aus zwei Gründen würde ich dies aber nicht empfehlen:
1. der Mehraufwand für ein Optimierungsmakro gegenüber mehreren Versuchen mit dem Solver ist meines Erachtens viel zu hoch und
2. falls mehr Verbraucher hinzukommen steigt die Rechenzeit exponentiell.


Angehängte Dateien
.xlsx   Gruppen berechnen_HART.xlsx (Größe: 20,77 KB / Downloads: 6)
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.





Antworten Top
#5
Hallo Emertens,

anbei eine Datei die dir zeigen soll wie ich es meine. Die aktuellen Formeln ermitteln ausdrücklich nicht wie von Ego vorgeschlagen irgendwelche nahezu gleichen Leistungssummen, weil diese Anforderung habe ich deiner Beschreibung nicht entnommen. Aktuell werden die Bauteile/Maschinen schlicht von links nach rechts in den Gruppen verteilt.

Die Mengenspalte hatte ich für den Veranschaulichungszweck zu meiner Entlastung einfach überschrieben, musst du dann halt wieder hinzufügen.


Angehängte Dateien
.xlsx   Gruppen berechnen_HART.xlsx (Größe: 17,22 KB / Downloads: 4)
Antworten Top
#6
Hallo

@E...,

In der Anlage jetzt mit Zuweisung der Zuordnung im Blatt Tabelle 1.

@B...,
a) Du glaubst also das es Zufall ist, dass die Leistungen aller Gruppen in dem Beispiel im Gegensatz zu deiner Lösung alle ähnlich groß sind.
b) Wozu sollte man die Gruppierung der Liste mit der Hervorhebung der Gruppenleistung so anlegen, wenn man die Leistung bei der Gruppenbildung nicht berücksichtigt?
c) zu
Zitat: Ich habe bereits versucht, dies manuell zu tun, aber das ist sehr zeitaufwändig.
Was ist an einer manuellen Zuodnung der Reihe nach aufwendig?


Angehängte Dateien
.xlsx   Gruppen berechnen_HART.xlsx (Größe: 21,09 KB / Downloads: 7)
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.





Antworten Top
#7
Hi Ego,

na ich habe gesehen, dass im Beispiel des Erfassers auch die Liste nur einfach gesplittet wurde, von oben nach unten allerdings. Zudem war im Anfangsbeispiel auch bei Weitem nicht die Beste Lösung was die Leistung angeht dargestellt. Wenn die Leistung also auch nicht explizit erwähnt wird, warum soll ich dann etwas in den Text interpretieren, was nicht vorhanden ist? Muss man also eine unnötig komplexe Lösung bieten wenn das nicht die Aufgabenstellung war, auch wenn man aus welchen Gründen auch immer der eigenen Überzeugung ist die Leistungsgruppierung müsse auf Teufel komm raus möglichst gleich sein? Der Aufgabensteller kennt doch seine Anforderung am Besten und wird es uns schon mitteilen. Auch Copy Paste kann man als aufwändig empfinden wenn man es manuell tun muss.

Und warum sind hier alle immer so streitsuchend, herablassend, vorwurfsvoll und besserwisserisch in diesem Forum? Die Art und Weise wie hier manche antworten ist einfach nur zum brechen.
Antworten Top
#8
Hallo,

1) ich habe die Datentabelle in D76:F96 in eine intelligente Tabelle namens "Tabelle1" umgewandelt.

2) ich habe dir 2 benutzerdefinierte Funktionen in den Namensmanager eingefügt:

mit Namen "Gruppe":
=LAMBDA(nr;tb;AnzGr; LET(tbHd; ZEILENWAHL(tb; 1); tbDt; WEGLASSEN(tb; 1); CtZl; ZEILEN(tbDt); CtGrZl; AUFRUNDEN(CtZl / AnzGr; 0); IdA; (nr - 1) * CtGrZl + 1; IdL; nr * CtGrZl; IdTb; SEQUENZ(CtZl); r; FILTER(tbDt; (IdA <= INDEX(IdTb; ; 1)) * (INDEX(IdTb; ; 1) <= IdL)); VSTAPELN(HSTAPELN(""; "Gruppe " & nr; ""); tbHd; r)))
Diese erzeugt eine einzelne Gruppe und benötigt 3 Parameter:
nr = die Nummer der Gruppe (wie in der Gruppenüberschrift enthalten)
tb = die Datentabelle (als intelligente Tabelle samt Kopfzeile, zB. Tabelle1[#Alle])
AnzGr = die Anzahl der Gruppen insgesamt, auf die Tabelle1 aufgeteilt werden soll

mit Namen "Gruppen":
=LAMBDA(Anz;tb; LET(GrId; SEQUENZ(Anz); r; REDUCE(""; GrId; LAMBDA(Akk;Id; WENNFEHLER(HSTAPELN(Akk; Gruppe(Id; tb; Anz)); ""))); WEGLASSEN(r; ; 1)))
Diese erzeugt alle Gruppen durch einen einzigen Funktionsaufruf, wobei sie die Funktion Gruppe mehrmals verwendet.
Sie benötigt 2 Parameter:
Anz = die Anzahl der zu erzeugenden Gruppen (mittels Funktion Gruppe)
tb = die Datentabelle (als intelligente Tabelle samt Kopfzeile, zB. Tabelle1[#Alle])

3) In Zelle A1 habe ich dir den einzig nötigen Funktionsaufruf eingefügt:
=Gruppen(5;Tabelle1[#Alle])
Dadurch werden 5 Gruppen mittels intelligenter Tabelle "Tabelle1" erzeugt und im Bereich A1:O6 die aufgeteilten Daten der Tabelle1 zurückgegeben.

4) Ich habe die etwas umständlichen Summenformeln des Arbeitsblattes umgewandelt in standardmäßig vorhandene Excel-Funktionen:
z.B in Zelle C14=SUMMENPRODUKT(A3:A13;C3:C13)

Datei liegt bei.


Angehängte Dateien
.xlsx   Emertens_Gruppen berechnen.xlsx (Größe: 19,84 KB / Downloads: 4)
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top


Gehe zu:


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