Clever-Excel-Forum

Normale Version: lösung (VBA?Solver?) für clevere Sortierung/Zusammenfassung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo zusammen,

vorab schonmal vielen Dank!

Anbei die Excel.

Tabellenblatt "Ausgangssituation":
Es geht darum, eine Lösung zu finden, um die Datenfelder (eine Zeile ist ein Datenfeld, insgesamt 200 Stück; Datenfeldname in Spalte B; Datenfeldnummer in Spalte C) sinnvoll zu gruppieren, d.h. "Datenpakete zu schnüren": Also ein Datenpaket soll möglichst viele Datenfelder enthalten, die die gleiche bzw. ähnliche Verknüpfungslogik (Zuordnung zu den Spalten 1-13 haben) vorweisen. Jedes Datenfeld ist mit verschiedenen Spalten ("Spalte 1" bis "Spalte 13") verknüpft/zugeordnet. Jedoch zumeist mit unterschiedlich vielen Spalten. In Spalte D ist die Menge der verknüpften/zugeordneten Spalten pro Datenfeld angegeben. Es geht jetzt darum, vier Datenpakete zu schnüren. Ein optimales Datenpaket ist, wenn die enthaltenen Datenfelder mit den gleichen Spalten verknüpft sind (z.B. Datenfeld 1 bis Datenfeld 21 --> sind alle mit den Spalten 1 bis Spalte 12 verknüpft; Spalte 13 ist nicht im Datenpaket enthalten). Problem: Es sollen insgesamt nur vier Datenpakete geschnürt werden. Das bedeutet, es müssen Datenpakete gescnürt werden, die Datenfelder enthalten, die auch "leere" Verknüpfungen zu den Spalten enthalten. Zum Beispiel: Wenn man das genannte Datenpaket mit dem Datenfeld 22 erweitert --> Datenfeld 22 hat eine leere Verknüpfung zu Spalte 10.
Ziel ist es nun, die vier Datenpakete so zu schnüren, dass diese Datenfelder enthalten, die möglichst eine gleiche/ähnliche Verknüpfungslogik aufweisen, sodass möglichst wenig "leere" Verknüpfungen bestehen.

Auf dem Tabellenblatt "mögliche manuelle Lösung" habe ich es mal "per Hand" versucht (fünf Datenpakete). Da sieht man, dass es nur durch ein bisschen "rumspielen" sehr schwierig ist, eine sinnvolle Lösung zu finden (viele leere Verknüpfungen). EIn "Programm" würde eine viel bessere Lösung finden. Wie man die Datenpakete sichtbar macht, ist ganz egal.

Es kann auch gerne eine Lösung gefunden werden, sodass vorab ausgewählt werden kann, wie viele Datenpakete man schnüren möchte.

Wenn jemand eine Lösung findet, wäre ein suuuper Weihnachtsgeschenk vorab Smile

 Viele Grüße!
Hallo

ich gebe mal zurück was ich an Logik aus dem Beispiel ersehen kann.  Die unten gezeigten Spalten müssen Daten enthalten, bei grau können auch Leerzeilen dazwischen sein.  Bei blau ist M-O immer leer, gelb enthaelt NUR M-O, und grün NUR Spalte j + Q.  Rot ist Ausnahme, Werte in Spalte Q
 
J - P  (--)    grau
J-L, --, P     blau
J, ---, Q      grün
M,, N, O     gelb
Alles Leer   orange

Sollen nur die Blöcke zusammen sortiert werden, oder auch die Daten innerhalb der Blöcke nach Spalten?  Um die Blöcke zu sortieren kann man die freie Spalte A benutzen, indem man jedem Block nach Buchstaben A,B,C,D,X sortiert.  Habe ich die Aufgabenstellung so richtig erkannt?

mfg  Gast 123
Hallo

ich habe gerade ein Makro in Modul1 entdeckt, aber seine Funktion nicht verstanden.  Dieser Teil gibt mir echt ein Raetsel auf.
     .Cells(i, j).Cut .Cells(i, Application.Match(.Cells(i, j).Value, .Rows(2), 0))

Wenn ich Cells.Cut durch Cells.Select ersetze, und auch bei Application(Match) ein Select anfüge schneidet das Makro zu meiner Verblüffung zwar eine Zelle aus, fügt aber Cut wieder genau in dieselbe Zelle ein.  Was soll das Makro denn in Wahrheit bewirken??  Das ist mir noch unklar.

mfg  Gast 123
Hallo Gast,

Zitat:Wenn ich Cells.Cut durch Cells.Select ersetze,

Eine einfache Antwort:
Cells.Cut kann es nicht ernsthaft geben und kann auch nicht wirklich funktionieren, weil man ja sonst ein Loch in's Tabellenblatt schneiden würde.
Würdest Du ein Option Explicit in das Modul schreiben, das kann man übrigens im VBA-Editor einstellen und in der Folge automatisch von VBA
erledigen lassen, bin ich mir ziemlich sicher, Du würdest eine Fehlermeldung um die Ohren gehauen bekommen.
(07.12.2018, 03:23)Käpt\n Blaubär schrieb: [ -> ]Eine einfache Antwort:
Cells.Cut kann es nicht ernsthaft geben und kann auch nicht wirklich funktionieren....

Hallo Peter, :19:

Range(oder eben Cells).Cut-Methode (Excel)...

Da gibt es doch tatsächlich Dinge zwischen Himmel und Erde...
(06.12.2018, 23:59)Gast 123 schrieb: [ -> ]Wenn ich Cells.Cut durch Cells.Select ersetze, und auch bei Application(Match) ein Select anfüge schneidet das Makro zu meiner Verblüffung zwar eine Zelle aus, fügt aber Cut wieder genau in dieselbe Zelle ein.  Was soll das Makro denn in Wahrheit bewirken??  Das ist mir noch unklar.

siehe hier: https://www.clever-excel-forum.de/thread...#pid142392
Hallo h...,

in der Anlage einmal ein Vorschlag zu einer VBA-Lösung.

A) Ich erstelle für jede auftretende Kombination eine Gruppe (in dem Beispiel 77) und fasse dann iterativ die Gruppen, die im Mittel der Vergleiche der einzelnen Gruppenmitglieder die gröste Übereinstimmung haben, solange zusammen, bis die gewünschte Anzahl der Gruppen erreicht ist.
Die Gruppe wird in Spalte T angezeigt.

B) Bei dem Vergleich habe ich zwei "Arten" realisiert:
a) Art = 1
Es werden bei der Neubewertung der Gruppenzusammenfassung nur die Elemente der ersten mit den Elementen der zweiten Gruppe paarweise verglichen.
b) Art <> 1
Es werden alle Elemente der zusammengefassten Gruppe paarweise verglichen.

Wahrscheinlich ist b) die sinnvollere Lösung.


C) In deinem Beispiel wird bei fünf und mehr Gruppen (mit der Art 1) die Zeile mit "Name165" als Gruppe mit einem Element ermittelt.
In so einem Fall kannst du ja eine Gruppe mehr als gewünscht auswählen und den einzelnen Wert dann manuell einer anderen Gruppe zuordnen.
Sorry, das Makro könnt ihr in Bezug auf das Problem vergessen. Das hatte ich nur vorher benutzt, um die Spaltenwerte 1-13 der richtigen Spalte zuzuordnen. Aber hier jetzt völlig irrelevant!

@Gast 123:Du beziehst dich auf die "mögliche manuelle Lösung". Diese sollte aber nur als Beispiel dienen, wie eine Lösung der Datenpakete aussehen könnte (ist aber eine wahrscheinlich schlechte Lösung). Bitte gehe für die Problemlösung nur auf das Tabellenblatt "Ausgangssituation" ein. Hier müssen Datenpakete sinnvoll definiert werden. Jedes der 200 Datenfelder (Zeile 3 bis Zeile 202) soll in einem der vier oder meinetwegen auch fünf Datenpakete vorkommen. Vielleicht nochmal anders formuliert: Ein Datenpaket enthält bestimmte Spalten von 1-13. Dazu werden am besten die Datenfelder (Zeilen) dem Datenpaket zugeordnet, die mit den gleichen Spalten verknüpft sind und deren Spalten auch im Datenpaket enthalten sind. Jedoch sag ich mal, gibt es in der Ausgangssituation ca. 80-90 verschiedene Zuordnungen der Datenfelder zu Spalten. Ich will aber keine 80-90 verschiedene Datenpakete haben, sondern nur 3-5.
Ich hoffe einigermaßen verständlich geworden.

Vielen Dank!
Hallo h...,

nur ein Hinweis, dass ich während deiner Antwort auf gestrige Einträge schon einen Vorschlag hochgeladen habe.
Hallo Helmut,

ja hatte ich gesehen, nachdem ich die Antwort hochgeladen hatte :D

Bin gerade dabei mir deine Lösung anzusehen. Sieht auf den ersten Blick schonmal sehr sehr gut aus!! Vielen Dank jetzt schonmal! Echt tricky..
Was ich mich noch Frage bzgl. Lösung a) [Art = 1]: "Es werden bei der Neubewertung der Gruppenzusammenfassung nur die Elemente der ersten mit den Elementen der zweiten Gruppe paarweise verglichen." --> Wie kann bevor die Gruppen überhaupt bestehen/definiert sind, die Elemente (ich denke damit meinst du die Datenfelder/Zeilen) von zwei Gruppen verglichen werden?

Und vielleicht noch eine Bitte (Kirsche auf dem Sahnehäubchen): Können die Datenpakete/Gruppen so markiert werden, dass auch die leeren Zellen farblich markiert sind? Im Ahang für die graue und rote Gruppe beispielhaft gemacht.

Nochmals vielen vielen Dank! Hilf mir mega weiter!
Seiten: 1 2 3