Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
532to536
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
532to536
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dynamische Matrix

Dynamische Matrix
15.12.2004 15:03:13
Peter
Hallo zusammen
ich habe leider keine Idee mehr wie ich das Problem lösen soll, kann mir jemand von Euch helfen?
Zur Problemstellung:
ich erhalte Daten durch eine CSV diese sehen z.B. folgendermassen aus
10051234;Wert1;Wert3;
10051235;Wert1;Wert2;Wert3;
10051236;Wert3;Wert4;
10051237;Wert2;Wert4;
10051238;Wert1;Wert3;
In Excel soll das ganze in etwa so aussehen
----------------Wert1--Wert2--Wert3--Wert4--Wert x
10051234--Wert1------------Wert3
10051235--Wert1--Wert2--Wert3
10051236----------------------Wert3--Wert4
10051237------------Wert2------------Wert4
10051238--Wert1------------Wert3
Im klartext gesagt ich muss Werte einlesen, die Matrix anhand der Werte erstellen und die Zellen entsprechend füllen.
Ich wäre euch für jede Idee die mir weiterhilft dankbar
Gruss Peter Boner

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Matrix
15.12.2004 15:46:03
Peter
hallo harry
zum ersten danke das ich so schnell Antwort bekommen habe,
ich bekomme aber beim ausführen deiner xls einen "Laufzeitfehler 1004" bei der selection der Daten in Spalte A1 kannst Du mir nochmals weiterhelfen, da ich bei dieser selection nicht ganz den durchblick habe.
Gruss Peter
PS: Wenn Du noch eine Idee hättest ein CSV direkt in eine Matrix einzulesen wäre das sensationell.
Anzeige
AW: Dynamische Matrix
harry
das ist einfach nur daten-text in spalten mit dem recorder aufgezeichnent. wenns nicht funkt, nimm es einfach neu auf und kopier den code rein.
interessanter ist aber die frage, was passiert bei Wert10. dann musst dus so machen
https://www.herber.de/bbs/user/14874.xls
AW: Dynamische Matrix
16.12.2004 08:06:04
Peter
Hallo Harry
es tut mir leid wenn ich dich nochmals belästigen muss.
Dein Code funktioniert eigentlich gut nur wenn der Wert keine Zahlen beinhaltet bricht er ab.Kannst du mir da noch mals helfen? Schu dir mal die Daten an die ich einlesen muss.
https://www.herber.de/bbs/user/14871.txt
Gruss Peter
Anzeige
AW: Dynamische Matrix
harry
hi peter,
diese datei erstellt in tabelle2 eine matrix. wenn ich dich richtig verstanden habe, ist das denke ich die lösung. check aber bitte, ob das auch stimmt, sonst musst du den code eventuell etwas abändern.
https://www.herber.de/bbs/user/14904.xls
liebe grüße,
harry
AW: Dynamische Matrix
16.12.2004 12:05:12
Peter
Harry du bist spitze.
War genau was ich wollte!!
Gruss und Dank aus Zürich
Peter
AW: Dynamische Matrix
hg
Hallo,
öffne die Datei über ein Makro (open for input) lese jeden einzelnen Textstring ein und verarbeite anschließend die einzelnen Strings (Extrahieren und Zuordnen) bis keiner mehr aus der Datei kommt.
Anzeige
AW: Dynamische Matrix
Hübi
Hi Peter,
einfach nur einmal als Überlegung:
Wenn die CSV-Werte immer bestimmte gleichartige Kennzeichen aufweisen, könnte man anhand derer die Positionierung feststellen und zur Neupositionierung ggf. fehlende Trennzeichen (;) einfügen. Anschließend Text in Spalten.
Gruß Hübi
AW: Dynamische Matrix
Ingolf
Hallo Peter,
ich würde die Datei zunächst einlesen, so dass die Daten entsprechend der Trennung durch Semikola auf einzelne Spalten aufgeteilt sind. Die so entstandene Tabelle würde ich dann in einem Makro über zwei verschachtelte Schleifen bearbeiten. Die innere Schleife prüft dabei innerhalb der ersten Wertespalte Zeile für Zeile von oben nach unten nach, ob die Werte tatsächlich in diese Spalte gehören. Falls nein, wird eine Leerzelle eingesetzt und dabei werden die nachfolgenden Spalten dieser Zeile nach rechts verschoben. Nach der letzten Zeile gehts dann über die äußere Schleife mit der nächsten Wertespalte weiter.
Der Knackpunkt dabei ist: Du brauchst für jede Wertespalte Kriterien, nach denen die in der Tabelle enthaltenen Werte eindeutig dieser Spalte zugeordnet werden können. Ohne solche Kriterien sieht es meines Erachtens ziemlich Mau aus. Wie sehen denn deine Daten aus? Vielleicht lädst du die Datei mal hoch, evtl. verkürzt.
Gruß Ingolf
Anzeige
AW: Dynamische Matrix
15.12.2004 16:15:26
Peter
Ich suche einen Lösungsweg der mir erlaubt die CSV per Knopfdruck einzulesen und in die Matrix zu füllen. ich lade mal ein solches Beispiel in Verkürzter Form hoch.
https://www.herber.de/bbs/user/14871.txt
Gruss Peter
AW: Dynamische Matrix
Volker
Hallo Ingolf,
hab die Sache bis zu dem Punkz verfolgt, weil ich neugierig auf deine CSV-Datei war.
Sieht meiner Meinung nach schlecht aus.
Wie willst Du denn unterscheiden, welcher Wert in welche Spalte gehört.
Ich kann da keinerlei Index oder sonst ein Unterscheidungsmerkmal erkennen.
Oder seh ich das bloß nicht?
Gruß
Volker
Anzeige
AW: Dynamische Matrix
15.12.2004 16:48:33
Peter
Hallo Volker
Die einzige Logik die dahinter steht ist:
Der erste Wert steht für ein Geraet die in der Y Achse stehen, die nachfolgenden werte sind die der X Achse(Wert darf nur einmal vorkommen) .

Wenn also ein neuer Wert gefunden wird soll dieser der X Achse hinzugefügt werden sowie die entsprechende Zelle in der Matrix markiert werden dies kann durch den selben Wert sein oder einer 1.
Gruss Peter
AW: Dynamische Matrix
Volker
Hallo Ingolf,
ich glaub, jetz hab ich's geschnallt:
Die Spaltenüberschriften ergeben sich aus der Gesamtheit der Geräte, wobei man natürlich in Zeile 1 noch nicht weiß, wieviele Spalten es werden.
Ganz schön knifflig.
Sortieren würde ich so(Ich geh mal davon aus, dass die Daten bereict in einzelnen Zellen stehen):
Den fertigen Code krieg ich ohne Aufzeichnung nicht aus dem Ärmel geschüttelt.
Aber das kannst Du ja auch selber.
Zeilenweise Zellen von Spalte B bis letzte nichtleere Spalte sortieren.
Also B1 bis z.B G1, dann B2 bis z.B. H2 usw. (oder pauschal bis Spalte IV)
Dann das ganze nach Spalte B sortieren. Dadurch hast du in Zelle B1 den 1. Wert nach nach alphabetischer Sortierung (stimmts ?)
Dann oben Zeile einfügen.
Wert aus B2 (ehemals B1) nach B1 kopieren.
Jetzt in Spalte B Wert von B1 durch "X" oder was Dir lieber ist ersetzen.
Nun kannst in Spalte B jedes NICHT"X" suchen und eine Zelle einfügen,
d.h den Rest nach rechts schieben.
Danach alles nach Spalte C sortieren. Jetzt hast Du den 2.Wert nach nach alphabetischer Sortierung in C2 (stimmts noch ?). C2 nach C1 kopieren.
Wert in C durch "X" ersetzen. Alle NICHT"X" nach rechts verschieben.
So gehts weiter, bis zur letzten Spalte.
Am Schluß ev. noch mal nach Spalte A sortieren.
Puh, was ne Tipperei,
Wenn Du absolut nichts damit anfangen kannst, kann ich Dir mal ne Mappe von mir hochladen, Wo ich es ähnlich mache.
Aber ich gehe davon aus, dass das Problem eher in der möglichen Vorgehensweise als in der Syntax lag.
Ich laß die Frage jedenfalls offen, damit ich sie morgen leichter wiederfinde.
Gruß
Volker
Anzeige
AW: Dynamische Matrix
16.12.2004 09:36:11
Peter
Salü Volker
kannst Du mir mal ne Mappe hochladen damit ich noch mehr anhaltspunkte bekomme?
Deine Sortierung müsste grundsätzlich funktionieren werde das mal in Angriff nehmen.
Danke im voraus
Gruss Peter
AW: Dynamische Matrix
Volker
Hallo Peter,
hier kommt die Mappe in abgespeckter Form allerdings ohne Daten, sondern nur mit dem Makro. Hoffentlich nicht zu spät.
https://www.herber.de/bbs/user/14908.xls
Zur Erklärung:
Ich erzeuge ein neues Blatt und kopiere Spalte A aller übrigen Blätter nebeneinander in das neue, beginnend in Spalte B. Dabei wird jede Spalte sortiert, überflüssiges oben gelöscht und der Blattname in die 1. Zeile geschrieben.
Dann sortiere ich spaltenweise alle Spalten von B bis Ende nach Zeile 2 und hab dadurch die alphabetisch kleinsten Werte in B2 und folgende stehen.
Dieser Wert wird in die erste Zelle kopiert und alle gleichen Werte in der Zeile durch "X" ersetzt.
In die hinteren Spalten (die mit den höheren Werten) wird eine Leerzelle eingefügt.
Damit ich das nicht einzeln machen muß, zähle ich die "X" und weiß, ab welcher Spalte keine mehr sind.
Das wiederholt sich für alle Zeilen:
spaltenweise sortieren aller Spalten von Spalten B - Ende nach Zeile(i).
kopieren des 1. Wertes
Wert durch "X" ersetzen
Leerzellen einfügen
neu sortieren.
Auf diese Weise rutschen alle Werte, die alphabetisch weiter hinten sind, nach und nach nach unten.
In Spalte A stehen alle Werte alphabetisch, in Zeile1 die Namen der Blätter.
Die Namen entsprechen wohl deinen Artikel? -nummern am Anfang der Zeilen,
Die Werte den Geräten.
Mit anderen Worten: Wenn Du deine Daten transponierst, könntest Du meinen Algorithmus mit wenigen Änderungen übernehmen.
Schau mal ob Du klarkommst
Gruß
Volker
D
J
Anzeige
Danke
16.12.2004 13:16:56
Peter
Salü Volker
danke für deine Mühe unterdessen hat mir Harry mit seinem script geholfen funktioniert tadellos.
Es lohnt sich das anzuschauen. Ich werde dennoch deine Mappe öffnen um deinen Lösungswegzu sehen.
Gruss aus Zürich
Peter
AW: Danke
Volker
Hallo Edwin,
ich hab Dir noch mal ein Bsp. hochgeladen, diesmal mit Daten.
Wenn Du das Makro laufen läßt, wird sortiert wie beschrieben.
Das Makro läuft normalerweise in einer Vorlage und ist sonst nicht Teil der Mappe und die Daten stammen von verschiedenen txt-files.
Ansonsten ist es im Prinzip wie bei Dir:
Ich habe sozusagen ein paar "Geräte" (Spaltenüberschriften) die eines oder mehrere "Merkmale" (Spalte A) aufweisen.
D.h., Du müsstest nur das CSV konvertieren, transponieren und die Sache mit dem Kopieren der Spalten rauswerfen.
https://www.herber.de/bbs/user/14912.xls
Viel Spaß damit
Volker
Anzeige
AW: Dynamische Matrix
Ingolf
Hallo Peter,
das sind ja schon immer wiederkehrende Einträge, wie "MS Office Pro 2000 SP3", "CCM 4.5.0.2" oder so. Ein Eintrag ist allerdings dabei, der immer mit einem Kleinbuchstaben beginnt, gefolgt von Ziffern. Die Ziffern unterscheiden sich dabei und zum Teil auch die Buchstaben aber ich glaube, dass diese Einträge schon in die gleiche Spalte gehören.
Trotzdem sieht das nach ner Menge Arbeit aus. Eine Lösung im Detail kann ich dir daher nicht anbieten. Aber mal so als Denkansatz: In einem ersten Schritt würde ich versuchen, herauszufinden, welche Einträge es überhaupt gibt. Dazu würd ich die Matrix auf Spalten aufteilen und diese dann in eine Spalte untereinander kopieren. Anschließend das Ganze sortieren und über Daten-Filter-Spezialfilter-keine Duplikate die Duplikate entfernen. Anschließend mußt du noch die oben erwähnten Einträge mit Kleinbuchstaben/Ziffern manuell entfernen, da sich diese ja von Fall zu Fall unterscheiden. Jetzt hast du erst mal ne Liste aller möglichen Einträge, die du als Spaltenüberschrift in deine Matrix einsetzen kannst.
Im zweiten Schritt geht es dann darum, die einzelnen Einträge in diese Matrix zu bekommen. Dazu würd ich mir überlegen, ein Makro anzulegen, mit zwei geschachtelten Schleifen. Die innere geht innerhalb jedes Gerätes von Eintrag zu Eintrag, sucht diesen in den Spaltenüberschriften der Matrix (über .find) und schreibt ihn in die Zeile, die zu diesem Gerät gehört. Die äußere Schleife steuert den Ablauf von Gerät zu Gerät. Zwei Dinge mußt du dabei noch irgendwie einbauen: Die Gerätebezeichnung kommt immer in die erste Spalte und die Einträge mit den Kleinbuchstaben kannst du nicht über .find zuordnen, da sie sich unterscheiden.
Ich bin jetzt erst mal Offline bis morgen. Dann steh ich für die eine oder andere Datailfrage wieder zur Verfügung. Viel Erfolg bei der Arbeit.
Gruß Ingolf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige