HERBERS Excel-Forum - das Archiv
Von Matrix zu Tabelle - aber nur die Hälfte
Lutz

Hallo,
ich habe folgendes Problem. Ich wandel eine Matrix (Entfernung zwischen zwei Punkten) in eine Tabelle um - mit Hilfe durchs Forum :-)
Dabei sind die Informationen aber ja doppelt enthalten - nämlich einmal z.B. als X1Y1 und einmal als Y1X1 ich bräuchte die Infos aber nur einmal. Mir würde also die Info X1Y1 in der Tabelle ausreichen - diese ist ja identisch mit Y1X1.
Über Filterfunktionen bin ich leider nicht weiter gekommen.
Anbei mal ein anschauliches Beispiel:
https://www.herber.de/bbs/user/65819.xls
Nach meiner Meinung könnte man entweder nur die Hälfte der Matrix (blau im Beispiel) in eine Tabelle umwandeln, oder die Tabelle um die doppelten Infos (gelb und grün im Beispiel) löschen...
Besten Dank für eure Hilfe
Lutz

Wie soll denn die Tabelle aussehen,...
Luc:-?

...Lutz?
So wie in deinem Bsp sieht so etwas meistens aus, nur das statt 0,00 für die Kombi mit sich selbst meist — eingetragen wird (das kannst du bspw über die benutzerdefinierte Formatierung 0;-0;"—"; erreichen). Wenn der weiße Teil (bzw der blaue) auch fehlen soll, musst du ggf im Makro eine Abfrage einbauen, so dass nur eine der beiden Ermittlungen durchgeführt wird, oder aber eine bedingte Formatierung setzen, die in Abhängigkeit von der Zelladresse die überzähligen Wertezellen ausgraut o.s.ä. und natürlich die Schrift auf die gleiche Farbe setzt. Alles andere (wie ein anderer TabAufbau) wird evtl komplizierter...
Gruß Luc :-?
AW: Wie soll denn die Tabelle aussehen,...
Lutz

Hallo Luc,
Danke für die Hilfe, aber leider habe ich in Echt so ca. ein 1000 x 1000 Matrix. Die Werte können ruhig in der Matrix bleiben, da stören diese nicht. Nur wenn ich dann daraus automatisch ne Tabelle mache brauche ich nur die Hälfte der Werte, also anstatt mit 1 Mio muss ich nur noch mit 500.000 Werten weiterrechnen... ;-)
Und ich würde ungern auf die automatische Erstellung der Tabelle verzichten.
Gruß Lutz
Ja und, was sollen wir nun tun? Raten wie...
Luc:-?

...du's nun gerne hättest, Lutz?
Denn die Voraussetzungen sind ja wohl klar - wir haben nur nicht alle Infos!
Gutnacht, Luc :-?
Ne nicht raten - sondern...
Lutz

Hallo Luc,
aus deiner ersten Antwort wurde mir nicht klar, dass Infos fehlen oder ich verstehe deine Antwort nicht?
Ich dachte eigentlich, dass das Beispiel ganz verständlich ist... aber dann lege ich noch einmal nach...
https://www.herber.de/bbs/user/65875.xls
Danke und Gruß
Lutz
Das hatte ich gemeint,...
Luc:-?

...Lutz,
du solltest eine Endtabellenform vorgeben!
Die Formel (ohne Runden) lautet dann für die erste Zelle...
=INDEX(B$4:H$10;VERGLEICH(I18;A$4:A$10;0);VERGLEICH(J18;B$3:H$3;0))
Du solltest die Werte auf jeden Fall runden, nicht nur auf 2 Stellen formatieren. Ich habe das in deiner Mappe bereits in der Basismatrix getan, weil ich dafür ein Tool habe, mit dem das ganz fix geht und außerdem die Originalwerte erhalten bleiben. Du müsstest dann in der Originalmappe noch RUNDEN(...;2) um die obenstehende Fml „herumlegen“.
Basismatrix und Ergebnisspalte habe ich wie zuvor von mir beschrieben formatiert — musst du aber nicht übernehmen... ;-)
So, hier noch deine Mappe zurück...
Gruß + schöWE, Luc :-?
Nachtrag: Im Nachhinein habe ich nochmals...
Luc:-?

...darüber nachgedacht, was dein Kernproblem sein könnte, Lutz,
denn das kam bisher nicht so recht raus... :->
Es ist doch eigentlich völlig wurscht, wo die Daten herkommen, es geht doch nur um eine Datenauswahl, die sogar sehr gut definiert ist. Bei dem von dir gewählten Aufbau der Ergebnistabelle hängt letztlich alles von der Indexbildung für Zeile/Spalte ab, denn damit müssen die Werte aus der Basismatrix ausgelesen wdn. Deshalb hier noch meine Ergänzung mit den Fmln dafür...
 IJKL
17ZeileSpalteWert 
18X1X1 
19X1X21 238,99 
20X1X3884,35 
21X1X4342,61 
22X1X5890,03 
23X1X61 403,94 
24X1X7887,46 
25X2X2 
26X2X3811,99 
27X2X41 053,66 
28X2X5819,32 
29X2X61 268,81 
30X2X7817,26 
31X3X3 
32X3X4548,65 
33X3X59,53 
34X3X6603,74 
35X3X76,29 
36X4X4 
37X4X5553,52 
38X4X61 061,68 
39X4X7551,18 
40X5X5 
41X5X6594,46 
42X5X73,37 
43X6X6 
44X6X7597,84 
45X7X7 
46Formeln:   
47I18[:I45]:=WENN(LINKS(I17)="X";WENN(ZÄHLENWENN(I17:I$18;
48                  I17)<8-RECHTS(I17);I17;"X"&RECHTS(I17)+1);"X1")
49J18[:J45]:=WENN(I18=I17;"X"&RECHTS(J17)+1;"X"&RECHTS(I18))
50K18[:K45]:=INDEX(B$4:H$10;VERGLEICH(I18;A$4:A$10;0);
51                     VERGLEICH(J18;B$3:H$3;0))bzw
52K18[:K45]:=RUNDEN(INDEX(B$4:H$10;VERGLEICH(I18;A$4:A$10;
53                     0);VERGLEICH(J18;B$3:H$3;0));2)

Und hier dann nochmals deine überarbeitete Mappe mit Anmerkungen...
Gruß Luc :-?
2.Nachtrag: Lösche bitte im VBProjekt...
Luc:-?

...das Modul cxModul, Stephan,
das habe ich leider vergessen; es würde dir auch nichts bringen, denn die Subroutine darin verweist auf etwas, was du nicht hast... ;-)
Luc :-?
DANKE
Lutz

Hallo Luc,
sorry für die späte Antwort - ich war unterwegs. GENAU, das ist es, was ich gesucht habe! - Also an dieser Stelle ganz recht herzlichen Dank für deine Hilfe.
Und entschuldige noch einmal, dass ich mich so ungenau ausgedrückt habe... :-) Werde in der Zukunft versuchen, es besser zu machen....
Gruß Lutz
Bitte sehr! Wird schon... ;-) Gruß owT
Luc:-?

:-?