Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1428to1432
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
Inhaltsverzeichnis

"Inhalte anders darstellen"

"Inhalte anders darstellen"
19.06.2015 12:06:18
Adrian1977
Hallo zusammen,
könnte mir jemand bitte bei nachfolgenden Problem helfen?
Im Beispiel habe ich Spalten mit einem "," getrennt, d.h. in Spalte A, Zeile 1 steht ein a, in Spalte B ein b, usw.
Das Ziel ist alle mehrfachen Inhalte nur einmal aufzulisten. Zusätzlich sollen gleiche Inhalte, sofern sich diese in unterschiedlichen Spalten befinden, mehrfach aufgelistet werden (trifft im Beispiel auf d, Spalte 3 und 4 sowie e Spalte 4 und f). Kommt gleicher Inhalt in mehreren Splaten vor, soll es noch mit "_1", "_2", usw. gekennzeichnet werden. Reihenfolge des Ergebnisses ist nicht relevant.
1. Zeile: a , b , c , f , g
2. Zeile: a , b , c , d , e
3. Zeile: a , b , d , e ,
Ziel: a , b, c , d_1, d_2, f, e_1, e_2, g (Reihenfolge nicht relevant)
Für Hilfe wäre ich sehr dankbar!
Danke & Grüße
Adrian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nachgefragt ...
19.06.2015 12:25:26
der
Hallo Adrian,
... wie viele Zeilen und Spalten sind denn max. auszuwerten?
Gruß Werner
.. , - ...

AW: nachgefragt ...
19.06.2015 12:34:20
Adrian1977
Ca. 10 Spalten und 10 Zeilen.
Dies muß dann aber ca. größer 1000 mal durchgeführt werden.

dann stelle ich den thread wieder offen ....
19.06.2015 15:17:21
der
Hallo Adrian,
... da Du dann offensichtlich einen VBA-Lösung benötigst und suchst?!
Gruß Werner
.. , - ...

Auf dein Bsp würde nachfolgende Fml passen, ...
20.06.2015 04:09:42
Luc:-?
…Adrian;
sie ist noch relativ kurz und benötigt keinerlei Hilfszellen, verwendet aber 3 (in VBA pgmierte) universelle UDFs und setzt eine stets gleiche Anzahl von zulässigen Wiederholungen (gleiche Werte in unterschiedlichen Spalten) voraus, weshalb sie wohl eher nicht infrage kommt. Folgte man deiner ZielAngabe nach Augenschein, müsste sie so aussehen (1zellige MatrixFml!):
{=VJoin(MTRANS(VSplit(VJoin(I1:M3;;1))) &WENN(HÄUFIGKEIT(VERGLEICH(INDEX(Sprite(MTRANS(VSplit(VJoin(I1:M3&WENN(ZÄHLENWENN(I1:M3;I1:M3)>1; "_"&SPALTE(A:E);"");;1)));"_");0;1);VSplit(VJoin(I1:M3;;1));0);ZEILE(1:7))<2;"";"_"&SPALTE(A:B)); ", ";1) }
Ihr Ergebnis ist für dein Bsp dann ⇒ a, b, c, d_1, d_2, f, e_1, e_2, g
Falls aber jeder Wert eine eigene Zelle (einer Spalte) beanspruchen soll, das Ergebnis (in Matrix­Konstanten­Schreibweise also so aussähe ⇒ {"a";"b";"c";"d_1";"f";"e_1";"g";"d_2";"e_2"}, müsste die mehrzellige MatrixFml diese Form haben:
{=MTRANS(VSplit(VJoin(MTRANS(VSplit(VJoin(I1:M3;;1))) &WENN(HÄUFIGKEIT(VERGLEICH(INDEX(Sprite(MTRANS(VSplit(VJoin(I1:M3&WENN(ZÄHLENWENN(I1:M3;I1:M3)>1; "_"&SPALTE(A:E);"");;1)));"_");0;1);VSplit(VJoin(I1:M3;;1));0);ZEILE(1:7))<2;"";"_"&SPALTE(A:B));; 1))) }
Sollen die Werte in einer Zeile über mehrere Spalten abgebildet wdn, kann das führende, die ganze Fml umschließende MTRANS entfallen (vgl unten).
Können sich zulässig wiederholende Werte aber unterschiedlicher Anzahl sein, sollte folgende (1zellige Matrix-)Fml verwendet wdn:
{=WECHSELN(GLÄTTEN(VJoin(WENN(HÄUFIGKEIT(VERGLEICH(INDEX(Sprite(MTRANS(VSplit(VJoin(I1:M3&WENN(ZÄHLENWENN(I1:M3; I1:M3)>1;"#"&SPALTE($A:$E);"");;-1)));"#");0;1);VSplit(VJoin(I1:M3;;-1));0);ZEILE($1:$7))<2; MTRANS(VSplit(VJoin(I1:M3;;-1)));WECHSELN(WECHSELN(WECHSELN(WIEDERHOLEN(MTRANS(VSplit(VJoin(I1:M3;; -1)))&"# ";HÄUFIGKEIT(VERGLEICH(INDEX(Sprite(MTRANS(VSplit(VJoin(I1:M3&WENN(ZÄHLENWENN(I1:M3;I1:M3) >1;"#"&SPALTE($A:$E);"");;-1)));"#");0;1);VSplit(VJoin(I1:M3;;-1));0);ZEILE($1:$7)));"#";"_1";1); "#";"_2";1);"#";"_3";1));;1));" ";", ") }
Diese liefert dann das Ergebnis ⇒ a, b, c, d_1, d_2, f, e_1, e_2, g
Wenn man das b in der 2.Zeile gg ein e austauscht, liefert sie ⇒ a, b, e_1, e_2, e_3, c, d_1, d_2, f, g, die andere Fml aber nicht!
Alle Werte in EinzelZellen einer Zeile, also ⇒ {"a"."b"."c"."d_1"."d_2"."f"."e_1"."e_2"."g"} erhält man mit folgender mehrzelliger MatrixFml:
{=VSplit(GLÄTTEN(VJoin(WENN(HÄUFIGKEIT(VERGLEICH(INDEX(Sprite(MTRANS(VSplit(VJoin(I1:M3&WENN(ZÄHLENWENN(I1:M3; I1:M3)>1;"#"&SPALTE($A:$E);"");;-1)));"#");0;1);VSplit(VJoin(I1:M3;;-1));0);ZEILE($1:$7))<2; MTRANS(VSplit(VJoin(I1:M3;;-1)));WECHSELN(WECHSELN(WECHSELN(WIEDERHOLEN(MTRANS(VSplit(VJoin(I1:M3;; -1)))&"# ";HÄUFIGKEIT(VERGLEICH(INDEX(Sprite(MTRANS(VSplit(VJoin(I1:M3&WENN(ZÄHLENWENN(I1:M3;I1:M3) >1;"#"&SPALTE($A:$E);"");;-1)));"#");0;1);VSplit(VJoin(I1:M3;;-1));0);ZEILE($1:$7)));"#";"_1";1); "#";"_2";1);"#";"_3";1));;1))) }
Sollen die Werte in einer Spalte stehen, muss sie noch ein MTRANS umschließen.
Diese Fmln sind also schon deutlich länger. Alle Fmln enthalten auch Zähler, wobei sie in den zu favorisierenden längeren Fmln bereits absolut adressiert sind. Der Zähler SPALTE(A:E) muss bei dir ja nicht bis 5 (wie im Bsp), sondern bis 10 zählen (10 Spalten), also mit $A:$J adressiert wdn. Der Zähler ZEILE(1:7) zählt von 1 bis zur Anzahl verschiedener Original­Werte, unabhängig davon, wo sie stehen. Ihre Anzahl könnte auch auf der Basis des entsprechenden FmlTeils ermittelt und in einer ZEILE/INDIREKT-Konstruktion verwendet wdn. Das Problem hierbei sind die zulässigen Wiederholungen, denn für deren Maximal­Anzahl verlangt die Fml je ein WECHSELN. 3 sind bereits in der Fml enthalten, obwohl für das Bsp nur 2 benötigt wdn, um zu zeigen, dass jeweils überzählige WECHSELN unschädlich sind. Leider habe ich eine das vereinfachende UDF immer noch nicht fertiggestellt (sie wäre mir aber auch zu umfangreich, um sie hier darzustellen).
Allerdings ist fraglich, da hat Werner sicher recht, ob du das überhaupt mit Fmln realisieren willst (und kannst), wenn ich deine Wiederholungs­angabe als mehr als 1000 Blöcke á 10×10 Zellen deute. Aber viell ist das ja trotzdem ein Ansatz für dich…
Deshalb gebe ich hier auch den Archiv­Standort der UDFs an. VSplit und VJoin sind in dieser Datei in letzter Version zu finden. Die vor 5 Jahren hochgeladenen Dateien, die evtl die UDF Sprite enthalten könnten, rückt der Server (zZ) nicht heraus (bzw hat sie verbummelt, kommt öfter vor), weshalb ich die hier später separat einstelle, falls du die Fmln benutzen willst.
Morrn, Luc :-?
Besser informiert mit …
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige