Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

lösung (VBA?Solver?) für clevere Sortierung/Zusammenfassung
#1
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!


Angehängte Dateien
.xlsm   VBA_sinnvolle_Sortierung.xlsm (Größe: 38,18 KB / Downloads: 8)
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#5
(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...
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • Käpt'n Blaubär
Antworten Top
#6
(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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Gast 123
Antworten Top
#7
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.


Angehängte Dateien
.xlsm   Gruppierung01.xlsm (Größe: 54,74 KB / Downloads: 2)
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:
  • halihalöle
Antworten Top
#8
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!
Antworten Top
#9
Hallo h...,

nur ein Hinweis, dass ich während deiner Antwort auf gestrige Einträge schon einen Vorschlag hochgeladen habe.
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
#10
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!


Angehängte Dateien
.xlsm   Gruppierung01_farbliche_Markierung.xlsm (Größe: 56,87 KB / Downloads: 4)
Antworten Top


Gehe zu:


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