Microsoft Excel

Herbers Excel/VBA-Archiv

Max Wert aus zusammengesetzten Werten


Betrifft: Max Wert aus zusammengesetzten Werten von: Christian
Geschrieben am: 13.04.2017 14:45:08

Hallo,

erstmal vielen Dank für das tolle Forum, dass mir bis jetzt bei jedem Problem helfen konnte. Jetzt habe ich aber ein Problem, bei dem ich absolut nicht mehr weiter weiß, so simpel es auch scheinen mag.

Hintergrund: Um Spalten zu sparen, setze ich 11 Werte mit Semikolon getrennt in eine Zeile. Jetzt möchte ich diese Werte mittels einer Formel aber wieder auftrennen und den maximalen Wert finden.

Spalte A:

2;3;3;5;9;9;14;20;20;23;26
3;5;6;6;8;12;12;17;23;23;26
0;3;5;6;6;8;12;12;17;23;23

B1: Maximum aller Werte vor dem ersten Semikolon
= 3
B2: Maximum aller Werte vor dem zweiten Semikolon
= 5
etc...

Spalte A besteht hierbei aus mehreren Hundert Datensätzen und muss daher flexibel gehalten werden.

Mein bisheriger Ansatz war:

{=KGRÖSSTE(INDEX(A$4:A$5000;ZAHLENWERT(TEIL(A$4:A$5000;1;FINDEN(";";J$4:J$5000)-1)));ZEILE(A1)) }
Funktioniert nur nicht, da Finden scheinbar keinen Bereich unterstützt :(

Wäre über jede Hilfe super dankbar.

  

Betrifft: AW: Max Wert aus zusammengesetzten Werten von: EtoPHG
Geschrieben am: 13.04.2017 14:51:52

Hallo Christian,

Da hast du dich wohl selber verrannt!
Zitat: Um Spalten zu sparen, setze ich 11 Werte mit Semikolon getrennt in eine Zeile
Du kannst mir doch kaum weismachen, dass du deine Daten nicht (unkomprimiert) in 16'384 verfügbaren Spalten unterbringst. Wenn es tatsächlich so wäre ist etwas am Datensatz-Aufbau grundfalsch.
Wie setzt du denn die Werte in die Spalte?

Gruess Hansueli


  

Betrifft: AW: Max Wert aus zusammengesetzten Werten von: Christian
Geschrieben am: 13.04.2017 15:25:16

Die maximale Anzahl an Spalten habe ich bisher nicht erreicht, wohl wahr (bin erst bei Spalte TT). Die Dateigröße ist aber ein enormes Problem bei solch großen Datenmengen. Die bisherige Excel Datei ist 32MB groß und durch das zusammenführen der Werte möchte ich die Anzahl an Spalten und zusätzlichen Formeln gering halten.

Es geht auch nicht darum, wie ich die Werte zusammensetze, sondern nur ob es eine Lösung dafür gibt oder sehe ich das falsch? Ich habe in einer Hilfsspalte die Anzahl an leeren Zellen, welche ich dann Summiere mit dem Wert davor.

Der erste Wert ist der aktuelle Bereich mit der Anzahl an Leerzeilen, der hinterm ersten Semikolon ist für den aktuellen Bereich + vorherigen Bereich.


  

Betrifft: AW: mit AGGREGAT() und TEXTFunktionen ... von: ... neopa C
Geschrieben am: 13.04.2017 15:10:05

Hallo Christian,

... in B1:

=WENNFEHLER(AGGREGAT(14;6;0+LINKS(TEIL(";"&A$1:A$999&";";FINDEN("!";WECHSELN(";"&A$1:A$999&";";";";"!";ZEILE(A1)))+1;9);FINDEN(";";TEIL(";"&A$1:A$999&";";FINDEN("!";WECHSELN(";"&A$1:A$999&";";";";"!";ZEILE(A1)))+1;9))-1);1);"")

Formel nach unten kopieren.

Gruß Werner
.. , - ...


  

Betrifft: AW: mit AGGREGAT() und TEXTFunktionen ... von: Christian
Geschrieben am: 13.04.2017 15:30:51

Danke dir vielmals!

Das hat mir echt den Tag gerettet. Es ist wohl an der Zeit mich mit der Aggregat Funktion zu beschäftigen, sehe das jetzt zum ersten Mal.


  

Betrifft: AW: dann frohe AGGREGAT()e, ääh ... Ostern owT von: ... neopa C
Geschrieben am: 13.04.2017 16:01:47

Gruß Werner
.. , - ...


  

Betrifft: AW: dann frohe AGGREGAT()e, ääh ... Ostern owT von: Luschi
Geschrieben am: 13.04.2017 17:15:34

Hallo Werner,

so gern ich Deine Hilfe bewundere, aber wer soll diese Formel nachvollziehen, wenn der Fragesteller
nur bla-bla-bla liefert statt eine Excel-Datei, die das Problem darstellt.
Ich hoffe, daß Dein Hilfesyndrom sich nicht nur an den Fragesteller richtet, sondern auch für
lernfähige User (wie mich) geeignet ist, das Problem nachzuempfinden.
Mein Moratorium - ohne Beispieldatei - keine Aktion meinerseits solltest Du noch mal überdenken,
wenn es um Fakten geht und nicht um allgemeine Aussagen, denn diese Monsterformel ohne Hintergrund einfach nicht nachvollziehbar.

Gruß von Luschi
aus klein-Paris

PS: Ich wünsche Dir schöne Osterfeiertage!


  

Betrifft: AW: für mich war sein Anliegen eindeutig ... von: ... neopa C
Geschrieben am: 13.04.2017 18:46:13

Hallo Luschi,

... und mE auch eindeutig sowie mE unproblematisch auch ohne Beispieldatei nachvollziehbar. Wobei ich für die Konstruktion meiner Lösungsformel und deren leichteren Kontrolle die bereitgestellten Datenwerte leicht modifiziert habe.

 AB
12;7;3;5;9;9;14;20;20;23;2699
299;5;6;6;8;12;12;17;23;23;297
30;3;16;12;6;8;12;12;17;23;2316
4 12
5 9
6 12
7 14
8 20
9 23
10 23
11 29
12  

Formeln der Tabelle
ZelleFormel
B1=WENNFEHLER(AGGREGAT(14;6;0+LINKS(TEIL(";"&A$1:A$999&";";FINDEN("!";WECHSELN(";"&A$1:A$999&";";";";"!";ZEILE(A1)))+1;9); FINDEN(";";TEIL(";"&A$1:A$999&";";FINDEN("!";WECHSELN(";"&A$1:A$999&";";";";"!";ZEILE(A1)))+1;9))-1); 1); "")


Gruß Werner
.. , - ...

PS: danke für Deine Wünsche, auch ich wünsche Dir schöne Osterfeiertage!


  

Betrifft: Vielleicht etwas kürzer für Luschi ... von: lupo1
Geschrieben am: 13.04.2017 19:50:58

B1: {=MAX(--GLÄTTEN(TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99)))}


  

Betrifft: GLÄTTEN kann noch weg von: lupo1
Geschrieben am: 13.04.2017 20:11:03

B1: {=MAX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99))}


  

Betrifft: AW: GLÄTTEN kann noch weg von: Luschi
Geschrieben am: 13.04.2017 20:37:47

Hallo lupo1,

egal wie ihr euch ins Zeug schmeißt, eine Lösung ohne Beispieldatei hier zu veröffentlichen,
bezweifle ich sehr stark, daß dem Fragesteller damit geholfen ist - er erhält zwar die
(richtige!) Lösung, aber nachvollziehen ist eine ganz ander Sache.
Ich schaue mir die Lösungsvorschläge an, um daraus eigene Lösungen zu erarbeiten.
Deinen Vorschlag schau ich mir morgen genauer an, aber damit wird die Lösungsfindung ohne Beispieldatei auch nicht einfacher!

Gruß von Luschi
aus klein-Paris



  

Betrifft: Mich interessierte die Frage gar nicht, denn von: lupo1
Geschrieben am: 13.04.2017 21:29:21

... ich sah nur eine AGGREGAT-Formel :-))) Und ein Beispiel natürlich. Danke, neopa!


  

Betrifft: ... und so klar, wie OT seine Tabelle schilderte, von: lupo1
Geschrieben am: 13.04.2017 21:47:13

... würden wir uns das hier allesamt von den anderen Fragestellern auch wünschen.

Woher Du jedenfalls Deine Zweifel an neopa's Nachbildung nimmst, ist mir schleierhaft.


  

Betrifft: AW: Vor- und Nachteile von WIEDERHOLEN() ... von: ... neopa C
Geschrieben am: 14.04.2017 08:21:41

Hallo lupo1,

... WIEDERHOLEN() ist für derartige Aufgaben offensichtlich eine leistungsstarke Funktion, die ich bisher wohl etwas vernachlässigt habe, während ich deren effektive Anwendung ich nun von Dir bereits zum wiederholten Male gesehen habe.

Vorteil(e): Die Funktion führt (unter bestimmten Voraussetzung) zu einer Reduzierung des Einsatzes von TEXT-Funktionen und damit auch zu einer Auswertungsbeschleunigung bei enorm verkürzter Formel, wie Du hier aufgezeigt hast.

Nachteil(e) bezogen auf dieses Beispiel und allgemein:
- es dürfen keine Leerzeilen im Auswertungsbereich beinhaltet sein.
- es dürfen keine unterschiedliche Anzahl des Trennzeichens auszuwerten sein
- es dürfen keine Fehlerwerte und Buchstaben oder gar nur Leerzeichen in den Daten vorhanden sein
(2. und 3. ist im konkreten Beispiel nicht bzw. wahrscheinlich nicht der Fall, könnte aber möglich sein)

Gruß Werner
.. , - ...


  

Betrifft: Andere Nachteile, als von Dir genannt von: lupo1
Geschrieben am: 14.04.2017 08:32:01

Die Konstruktion ist beschränkt. Zwar dürfen die Texte variabel lang sein, aber je länger oder variabler, desto größer muss die "99" werden, und desto schneller stößt man multiplizierend an die erlaubte Länge eines Strings in Excel. Auch müssen dafür die Daten evtl. "manuell gewürdigt" werden ...

Aber die Formel ist meist ziemlich kurz - und hier geht es ja um fixe 11 "Felder".

Das mit den Leerzeichen stimmt übrigens (hier) nicht, da es ums Semikolon geht, welches in die Leerzeichen gewechselt wird. Es stimmt erst, wenn das Leerzeichen auch schon vorher der Trenner ist und es darüber hinaus weitere gibt. Aber dann ist der Datensatz ja eh "krank".

Unterschiedliche Anzahl des Trennzeichens: Das stimmt auch nicht, bzw. nur hier mit dem Spezialfall MAX, der ja gerade eine fixe Feldzahl bedingt.


  

Betrifft: AW: sieh auch mal ... von: ... neopa C
Geschrieben am: 14.04.2017 08:41:12

Hallo,

... dieses Beispiel:

 ABC
12;7;3;5;9;9;14;20;20;23;269999
299;5;6;;8;12;12;17;23;23;2977
30;3;16;15 ;6;8;12;12;171616
4 15#WERT!
5 99
6 1212
7 1414
8 2020
9 2323
10 23#WERT!
11 29#WERT!
12   

Formeln der Tabelle
ZelleFormel
B1=WENNFEHLER(AGGREGAT(14;6;0+LINKS(TEIL(";"&A$1:A$999&";";FINDEN("!";WECHSELN(";"&A$1:A$999&";";";";"!";ZEILE(A1)))+1;9); FINDEN(";";TEIL(";"&A$1:A$999&";";FINDEN("!";WECHSELN(";"&A$1:A$999&";";";";"!";ZEILE(A1)))+1;9))-1); 1); "")
C1=MAX(INDEX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99)); ZEILE(A1)*99;99); ))


Ich geh jetzt allerdings offline so dass ich auf deine evtl. Antwort nicht (gleich) reagieren kann.

Gruß Werner
.. , - ...


  

Betrifft: Fehlerhafte Daten von: lupo1
Geschrieben am: 14.04.2017 09:21:16

(und um die handelt es sich!) korrigiere ich immer gerade dadurch, dass die Formel mir den Fehler anzeigt.

Ich halte gar nichts davon, dass AGGREGAT oder WENNFEHLER die Fehler umgeht. Denn wenn die Daten nicht stimmen, stimmt womöglich auch die Schlussfolgerung daraus nicht.

Mit anderen Worten: Fehler über strenge kurze Formeln sind erwünscht! Dann können Daten repariert werden.


  

Betrifft: AW: eher eine Interpretationsangelegenheit, ... von: ... neopa C
Geschrieben am: 15.04.2017 19:31:58

Hallo lupo1,

... bezogen auf die konkrete Aufgabenstellung hättest Du aber völlig Recht. Persönlich nutze ich auch öfters Ergebnisfehlerwerte zum Überprüfen von Daten und oder eines Formelkonstruktes.
Doch steht Deine Aussage hier nicht auch ein wenig im Widerspruch zu Deiner Aussage an Luc; ich zitiere: "...eine Lösung (Formel oder UDF) solle für viele Aufgaben verwendbar sein ..."?.

Übrigens, könnte man in Deiner Formel durch den zusätzlichen Einbau von WECHSELN(";"&A$1:A$3;";";";0") auch evtl. Leerwerte verkraften und mittels INDEX() und ANZAHL2() den auszuwertenden Bereich flexibilisieren. Ebenso könnte man im Bedarfsfall Deine "Konstante" 99 durch MAX(LÄNGE(A1:INDEX(A:A;ANZAHL2()))) ermittelt werden.

Doch zur Lösung für das (evtl.) Problem der Formel bei unterschiedlichen Datenwerten-Anzahl und Zwischenleerzeilen fällt mir jetzt auch nicht gleich etwas sinnvolles ein.

Vorgenanntes ist zwar im konkreten Beispiel alles nicht notwendig aber ... siehe vor.

Gruß Werner
.. , - ...


  

Betrifft: Danke übrigens für den INDEX ... von: lupo1
Geschrieben am: 14.04.2017 09:47:28

... schon stark, dass dessen Einsatz die {} entbehrlich macht.


  

Betrifft: Der fasst das ganze, durch WECHSELN entstandene, … von: Luc:-?
Geschrieben am: 14.04.2017 15:50:48

…Datenfeld zusammen, Lupo,
was allerdings auf INDEX selbst angewendet (vgl meine duale MatrixFml) nicht fktioniert, auch nicht als singulare MatrixFml!
Gruß + FrOst, Luc :-?

Besser informiert mit …


  

Betrifft: AW: möglicherweise einfacher nachvollziehbar, ... von: ... neopa C
Geschrieben am: 15.04.2017 19:31:55

Hallo Luschi,

... wenn ich meine "Monsterformel" wie nachfolgend aufgezeigt aufsplitte und entsprechend "strukturiert" anwende.

Des weiteren zeig ich damit auch auf, dass mein Formelvorschlag kein Problem hat mit:

- Leerwerte (in meinem Beispiel in A2 und A6)
- Textwerten (in A1 und A6)
- Fehlerwerten (in A6)
- Leerzeilen (in A5 und ab A8)
- unterschiedlicher Anzahl von auszuwertenden Datenwerten in den auszuwertenden Datenzellen (A6;A7)

und trotzdem auf WENNFEHLER() verzichtet werden kann (#ZAHL! in E12 und ab E16 zeigt gewollt/korrekt an, dass es hier keinen MAX-Wert geben kann; diese "Fehlermeldungen" können bei Bedarf durch eine Klammerung mit WENNFEHLER() durch "" ausgeblendet werden).

Das die Formel in E1 von allen bisher hier im thread aufgezeigten Formeln nunmehr scheinbar die wenigsten Standard-Funktionen nutzt und die kürzeste ist, ist völlig irrelevant, weil darin ja auf die eine benannte/definierten Formel (X) mit weiteren Funktionen zurückgriffen wird.

Wenn meine Formel auch nicht die schnellste in der Auswertung ist (das ist die von lupo1 mit WIEDERHOLEN() aufgezeigte), ist diese allerdings die "robusteste", wenn man die von Christian gestellte Aufgabe nicht starr sondern "allgemeiner" auslegt (z.B. insbesondere das unterschiedliche Anzahl von Werten je Datenzelle auftreten können ...).

 ABCDE
1Daten   99
22;;;;9;9;14;20;20;23;26   77
399;5;6;4;8;12;12;17;23;23;   6
40;3;5;6;6;8;12;12;17;23;23   6
5    9
65;11;;;;;;;;;;;33;-11;99;;;   12
7#NV;77;;;;   14
8    20
9    23
10Ende   23
11    26
12    #ZAHL!
13    33
14    -11
15    99
16    #ZAHL!

Formeln der Tabelle
ZelleFormel
E1=AGGREGAT(14;6;0+LINKS(X;FINDEN(";";X)-1); 1)
Namen in Formeln
ZelleNameBezieht sich auf
E1X=TEIL(";"&!$A$1:$A$999&";";FINDEN("!";WECHSELN(";"&!$A$1:$A$999&";";";";"!";ZEILE()))+1;9)
Namen verstehen


Gruß Werner
.. , - ...


  

Betrifft: AW: dann frohe AGGREGAT()e, ääh ... Ostern owT von: Christian
Geschrieben am: 18.04.2017 09:36:19

Ich habe kein bla bla geliefert, sondern eine präzise Problemstellung. Wenn das Problem komplexer gewesen wäre, hätte ich sicher eine Datei hochgeladen. Ich frage mich warum das hier ein Problem sein sollte? Mein Problem wurde genau so gelöst, wie ich es wollte. Das Verständnis für die Formel muss ich selbst entwickeln.

Vielen Dank nochmals @lupo1


  

Betrifft: AW: dann frohe AGGREGAT()e, ääh ... Ostern owT von: Christian
Geschrieben am: 18.04.2017 09:42:20

Muss ich mich gleich nochmal korrigieren. Danke Werner :)


  

Betrifft: AW: danke, aber auch lupo1 hat es so gesehen owT von: ... neopa C
Geschrieben am: 18.04.2017 13:12:47

Gruß Werner
.. , - ...


  

Betrifft: Vergleich einiger Varianten von: Luc:-?
Geschrieben am: 14.04.2017 03:58:25

Hi, Folks;
so kurz vor Ostern noch soviel los…? ;-)
Habe mir im Folgenden mal erlaubt, Lupos AGGREGAT-Alternative (zyan) 3 eigenen Varianten ggüberzustellen:

 ABCDEFG
1
2;3;3;5;9;9;14;20;20;23;261.Werte:3333 
3;5;6;6;8;12;12;17;23;23;262.Werte:5555 
0;3;5;6;6;8;12;12;17;23;233.Werte:6666 
 4.Werte:6666 
Maxima der Positionen5.Werte:9999 
B:C: duale MatrixFmln6.Werte:12121212 
D;E: singulareMatrixFmln7.Werte:14141414 
F: normale Fmln8.Werte:20202020 
 9.Werte:23232323 
(verwandte UDFs idR im Archiv)10.Werte:23232323 
 11.Werte:26262626FmlLängen
B1:C1[;B2:C11]: {=WAHL(SPALTE(A:B);ZEILE()&".Werte:";MAX(INDEX(VSplit(A$1:A$3;";";1);ZEILE($1:$3);ZEILE())*1^ZEILE($1:$3)))}106
D1[:D11]: {=MAX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99))}75
E1[:E11]: {=MAX(INDEX(TxEval("{"&VJoin(WECHSELN(A$1:A$3;";";",");";")&"}");0;ZEILE()))}VJoin-Vs1.4(im Archiv)75
F1[:F11]:=MAX(INDEX(TxEval(VJoin(VSplit(A$1:A$3;";";1);",;";2));0;ZEILE()))VJoin-Vs1.5(unpubliziert)66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Weil es sich so anbot, habe ich mit einer dualen MatrixFml begonnen. Das wäre ein schönes Bsp dafür, wozu man INDEX veranlassen kann, wenn man diese Form wählt, gäbe es nicht auch noch singulare Alternativen, wie die von Lupo, und natürlich sogar „normale“ Fml-Lösungen, wie die von neopa, die ich hier wg ihrer exorbitanten Länge nicht mit aufgenommen habe (dass sie fktioniert, war ohnehin klar), oder meine letzte, die allerdings eine (noch) nicht im Archiv vorhandene UDF-Version benötigt. Die alleinige Ursache dafür, dass die vorletzte Variante nur als (singulare) MatrixFml fktioniert, liegt in der Verwendung der XlFkt WECHSELN. Würden die Original­Daten kom­ma­getrennt vorliegen, könnte sie entfallen!
Die UDF TxEval könnte auch durch die XLM-Fkt AUSWERTEN ersetzt wdn, was aber die Verwendung von Pkt statt Komma (oder hier ori­gi­nales ;) verlangen würde. Außerdem müsste dann ja für diesen Fml-Teil ein Name definiert und verwendet wdn.
Ansonsten war die Aufgabe recht interessant, denn ich hatte vor etlichen Jahren mal mit solchen Listen­Texten experi­mentiert, UDFs zu ihrer Erzeugung und Weiter­verarbeitung als Mengen geschaffen. Allerdings ging's dabei nicht um Extrema gleicher Positionen ver­schie­dener Mengen, sondern um Schnitt- und Differenz­mengen. Das wäre aber auch noch eine Ergänzungs­idee, die hier aber doch etwas aus dem damals gesteckten Rahmen fallen würde.
Gruß + FrOst, Luc :-?

PS: Ich bin übrigens auch mit Christians Angaben ausgekommen… ;-]


  

Betrifft: Es wird Zeit, Luc, Deinen UDF's einen Platz von: lupo1
Geschrieben am: 14.04.2017 07:31:35

zu schaffen (mit der Möglichkeit der nachträglich unbegrenzten Optimierung). Das biete ich gern an für einen Eintrag bei xxcl.de. Ich habe verstanden, dass Dir die Wahrung Deiner Identität sehr wichtig ist. Dafür gäbe es zwei Möglichkeiten:

1. Wegwerf-Mail
2. Posten und Nacheditieren bei office-loesung.de/p in einem beliebigen Thread, den Du nach Erfolg dann wieder aufräumst. Warum dort? Weil Ändern dort zeitlich nicht begrenzt ist. Einziges Problem: Du müsstest Dich dort anmelden.

Dein oft vorgebrachtes Mahnen, eine Lösung (Formel oder UDF) solle für viele Aufgaben verwendbar sein, wenn es sich anböte, unterstütze ich, da ich genauso denke. Wenn der Ziegelstein wie ein Legostein aussieht, kann ich mit dem schließlich auch wie mit verbundenen Augen mauern.


  

Betrifft: Mal sehen; ansonsten hier noch ein Nachtrag ... von: Luc:-?
Geschrieben am: 14.04.2017 16:00:02

…mit Werners INDEX-Variante, Lupo &all:

 ABCDEFGHI
1
2;3;3;5;9;9;14;20;20;23;261.Werte:333333 
3;5;6;6;8;12;12;17;23;23;262.Werte:555555 
0;3;5;6;6;8;12;12;17;23;233.Werte:666666 
 4.Werte:666666 
Maxima der Positionen5.Werte:999999 
B:C: duale MatrixFmln6.Werte:121212121212 
D;F: singulareMatrixFmln7.Werte:141414141414 
E;G;H: normale Fmln8.Werte:202020202020 
 9.Werte:232323232323 
(vwendete UDFs idR im Archiv)10.Werte:232323232323 
 11.Werte:262626262626FmlLängen
B1:C1[;B2:C11]: {=WAHL(SPALTE(A:B);ZEILE()&".Werte:";MAX(INDEX(VSplit(A$1:A$3;";";1);ZEILE($1:$3);ZEILE())*1^ZEILE($1:$3)))}106
D1[:D11]: {=MAX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99))}   75
E1[:E11]:=MAX(INDEX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99);))   83
F1[:F11]: {=MAX(INDEX(TxEval("{"&VJoin(WECHSELN(A$1:A$3;";";",");";")&"}");0;ZEILE()))} VJoin-Vs1.4(im Archiv)75
G1[:G11]:=MAX(INDEX(TxEval("{"&VJoin(INDEX(WECHSELN(A$1:A$3;";";","););";")&"}");0;ZEILE())) VJoin-Vs1.4(im Archiv)83
H1[:H11]:=MAX(INDEX(TxEval(VJoin(VSplit(A$1:A$3;";";1);",;";2));0;ZEILE())) VJoin-Vs1.5(unpubliziert)66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Gruß + FrOst, Luc :-?


  

Betrifft: ...Und noch einer, womit sich der Kreis schließt! von: Luc:-?
Geschrieben am: 15.04.2017 03:55:30

Tja, Lupo &all,
da steckte die kürzeste Lösung mit nur einer UDF in Archiv-Version und 3 Standard-Fktt schon in meiner dualen MatrixFml und ich habe es erst jetzt bemerkt. So kann's mitunter gehen. Deshalb nun nochmal dasselbe, um diese wohl ultimative Lösung ergänzt, die wieder mal zeigt, wie nützlich eine solche UDF ist, obwohl ein Xl-Pendant aus unerfindlichen Gründen immer noch fehlt:

 ABCDEFGHIJ
1
2;3;3;5;9;9;14;20;20;23;261.Werte:3333333 
3;5;6;6;8;12;12;17;23;23;262.Werte:5555555 
0;3;5;6;6;8;12;12;17;23;233.Werte:6666666 
 4.Werte:6666666 
Maxima der Positionen5.Werte:9999999 
B:C: duale MatrixFmln6.Werte:12121212121212 
D;F: singulare MatrixFmln7.Werte:14141414141414 
E;G;H;I: normale Fmln8.Werte:20202020202020 
 9.Werte:23232323232323 
(vwendete UDFs idR im Archiv)10.Werte:23232323232323 
 11.Werte:26262626262626FmlLängen
B1:C1[;B2:C11]: {=WAHL(SPALTE(A:B);ZEILE()&".Werte:";MAX(INDEX(VSplit(A$1:A$3;";";1);ZEILE($1:$3);ZEILE())*1^ZEILE($1:$3)))}VSplit-Vs1.1(im Archiv)106
D1[:D11]: {=MAX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99))}    75
E1[:E11]:=MAX(INDEX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99);))    83
F1[:F11]: {=MAX(INDEX(TxEval("{"&VJoin(WECHSELN(A$1:A$3;";";",");";")&"}");;ZEILE()))}VJoin-Vs1.4(im Archiv)  74
G1[:G11]:=MAX(INDEX(TxEval("{"&VJoin(INDEX(WECHSELN(A$1:A$3;";";","););";")&"}");;ZEILE()))VJoin-Vs1.4(im Archiv)  82
H1[:H11]:=MAX(INDEX(TxEval(VJoin(VSplit(A$1:A$3;";";1);",;";2));;ZEILE()))VJoin-Vs1.5(unpubliziert)VSplit-Vs1.1(im Archiv)65
I1[:I11]:=MAX(INDEX(VSplit(A$1:A$3;";";1);;ZEILE()))  VSplit-Vs1.1(im Archiv)43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Das kann nun auch jeder nachvollziehen, der die UDF hat bzw im Archiv findet (habe am Laptop meine LinkListe nicht zV).
Gruß & FrOst, Luc :-?

PS: Ich bin erfreut darüber, dass Du in der UDF-Frage genauso denkst wie ich, was sich wohltuend von der Masse der TrivialAngebote im Netz (selbst auf WebSites mit eigenem Anspruch…!) unterscheidet. Damit meine ich natürlich nicht komplexe Spezial-UDFs für Sonder­fälle und auch keine Pgmmier­Hilfsmittel, sondern den leider meist üblichen „hingerotzten Kleckerkram“ für EndAnwender.


  

Betrifft: AW: na ja, wohl eher doch nicht ... von: ... neopa C
Geschrieben am: 15.04.2017 19:32:04

Hallo Luc,

... denn Deine letzte Lösungsformel ermittelt zwar im konkreten Fall das richtige Ergebnis, aber erfüllt mE nicht den Anspruch, den Du bzgl. UDFs selbst gesetzt hast.

Zunächst aber, muss ich feststellen, dass ich nicht verstehen kann, warum gerade Du immer mal wieder die Länge einer Formel als ein "Vergleichsmaß" anführst. Das die Länge einer Formel in nur wenigen Fällen eine Rolle und im seltensten Fall eine wichtige oder gar entscheidende spielt, sollte doch gerade Dir sicherlich bewusst sein.

Wenn reine "Excel-Formellisten" das tun, dann ist das heutzutage doch meist nicht (mehr) wirklich sehr ernst zu nehmen (so lasse auch ich mich hin und wieder zu derartigem hinreißen).

Wenn aber die Formellänge als "ein Vergleichsmaß" ins Spiel gebracht wird, dann muss dies auch auf gleicher "Basis" geschehen; d.h. überall wo in einer Formel auf eine UDF (welcher Art auch immer) zurückgegriffen wird, kann die "Formellänge" nicht mit der von Formeln verglichen werden, die lediglich mit Standardfunktionalitäten gestrickt sind. Denn ansonsten kann fast jede Formellösung mit nur 2 Zeichen Länge (bestehend aus "=" und einem Buchstabe) erstellt werden. Die dazu benutzte "benannte Formel" kann aber genauso wenig außer Betracht gelassen werden, wie eine UDF.

Zu Deinen UDFs.
Wie Du weißt, habe ich vor längerer Zeit eine ähnliche Aussage, wie die hier von lupo1 geäußerte vorgetragen. Mal ganz davon abgesehen, dass ein Teil des potentieller Nutzerkreis Deiner UDFs keine nicht zertifizierten Makros und UDFs einsetzen dürfen und ein anderer (größerer) Teil aus verschiedenen anderen (teils möglicherweise auch vorgeschobenen) Gründen, solche nicht einsetzen (wollen), gibt es noch weitere "Hürden".

Deine UDFs müssen manchmal teilweise recht mühsam im Netz gesucht werden (hatte vorhin mal testhalber bestimmt mehr als 5 Minuten gebraucht, um Deine UDF VSPLIT zu finden) greift Deine Werbung für Deine UDFs zu geschätzten 95% ins Leere. Du hattest doch mal zwischenzeitlich Links zu Deinen UDFs auf die entsprechende Archivthreads mit angegeben, warum nicht immer?

Wenn Deine UDF(s) dann gefunden wurde, mangelt es diesen mE auch an ausreichender Anwendungsdokumentation, was weitere potentielle Nutzer davon abhält, diese nicht nur als "Eintagsfliege" einzusetzen. Ich weiß, die "liebe Zeit" ...

Nun aber auch noch kurz zu Deiner letzten Formel im konkreten Anwendungsfall.
Mit dieser wird mit vergleichsweise wenig Funktionen eine Auswertung auch dann ermöglicht, wenn im auszuwertenden Datenbereich Leerzellen und Leerwerte sind und sogar auch, wenn einige Datenwerte Textwerte sind. Aber leider nicht, wenn eine unterschiedliche Anzahl von Trennzeichen vorhanden sind. Brauchst Du dazu doch wieder eine weitere UDF? Welche und wie eingesetzt?

Gruß Werner
.. , - ...


  

Betrifft: Zu Deinen Anmerkungen & Fragen, ... von: Luc:-?
Geschrieben am: 16.04.2017 02:41:20

…Werner,
von unten nach oben:
n. Nein, im Prinzip nicht, wenn man die Fml wie folgt ergänzt, was sie wieder zu einer singularen MatrixFml machen würde (hier relevante Zeilen 22:23):
{=MAX(INDEX(VSplit(A$22:A$23&WIEDERHOLEN(";";MAX(LÄNGE(A$22:A$23)-LÄNGE(WECHSELN(A$22:A$23;";";""))) -LÄNGE(A$22:A$23)+LÄNGE(WECHSELN(A$22:A$23;";";"")));";";1);;ZEILE(A1))) }
In einem konkreten Fall könnte allerdings auch eine vorgegebene MatrixKonstante ausreichen (hier 5 Werte und 3 Werte):
{=MAX(INDEX(VSplit(A$22:A$23&WIEDERHOLEN(";";{0;2});";";1);;ZEILE(A1)))}
Allerdings frage ich mich, was das dann sollte‽ So etwas, als Einzelwerte exakt auf einen ZellBereich abgebildet, ergäbe eine irreguläre Matrix, mit der Xl nichts anfangen könnte, denn das ist auf regulär-rechteckige Matrizen, nicht solche mit „Flatterrand“ ausgerichtet. Die ZellEntsprechung sähe dann zB so aus: (A22:E22;A23:C23)
Du weißt ja, dass dann für die Verarbeitung von Matrizen ausgelegte Xl-Fktt versagen! Die 0-Werte der LeerZellen müssten folglich ergänzt wdn, um eine rechteckige reguläre Matrix zu erhalten. Ich habe dieses Problem übrigens in manchen komplexen UDFs angeschnitten und stelle dem Benutzer in diesen anheim, ob und wie eine reguläre Matrix erzeugt wdn soll.
n-1. Eine komplette Doku erfordert noch mehr Arbeit als eine (simple) Fml-Beschreibung, vor der sich deshalb auch die Meisten drücken. Allen neueren UDFs von mir ist aber wenigstens eine Kurz­beschrei­bung in Stich­worten beige­fügt, primär als Gedächtnis­stütze zur späteren Anfer­tigung einer Doku gedacht (für ca 60 ältere UDFs habe ich die schon, inkl Anwen­dungs­bspp, ich weiß also, wie arbeits­aufwendig das ist → voll verlinkte HTML-Hilfe­datei). Außerdem verfügst ja gerade Du auch über weiter­gehendes Material mit älteren Versionen der UDFs (VJoin/VSplit in PrinzipL5).
n-2. Es ist Ostern und wir haben Besuch. Deshalb schreibe ich zZ meist vom Laptop aus (was ich auch erwähnt hatte!). Die LinkListe liegt aber auf dem Desktop des PC! Außerdem habe ich die Links zu diesen Standard-UDFs inzwischen so häufig gepostet, dass leicht einer zu finden wäre. Das ist also kein ernsthaftes Gg-Argument! Außerdem habe ich das hier als eher „akade­mische“ Diskussion auf­gefasst.
n-3. Hürden gibt es in verschiedenster Art. Das geht inzwischen sogar soweit, dass selbst Nutzer formal gleicher Xl-Versionen nicht denselben Tool-Umfang zV haben, von unter­schiedlichen Versionen ganz zu schweigen. Die meisten meiner UDFs können aber in allen Versionen ab Xl9/2k eingesetzt wdn (manche auch davor). Während Du Dich bemühst, Deine Fmln möglichst universell zu fassen, indem Du alle Eventua­litäten zu berück­sichtigen suchst, mache ich das in den UDFs, denn da gehört das auch hin. Dagg sind Fmln immer auf einen speziellen Einsatz­Zweck hin ausge­richtet, weshalb Fml-Kompendien stets nur ein Grund­Gerüst liefern können bzw sollten. Die Anpassung an den jeweiligen Einsatz­fall muss der Anwender leisten! Es ist schon ein großes Ent­gg­kommen, wenn in Foren eine Fml-Lösung für den speziellen Fall geliefert wird. Eine gelieferte UDF darf und sollte dagg schon auch für andere, analoge Fälle anwend­bar sein.
n-4. Ich lasse benannte Fmln niemals außer betracht, denn sie müssen ja ebenfalls ein­ge­geben wdn. Und darum geht's (mir) letzt­endlich → nicht nur Rechen-, sondern auch Schreib­Aufwand mini­mieren. Und natürlich können UDF-haltige Fmln direkt mit Standard-Fmln vgln wdn (abgesehen mal davon, dass Deine eigent­lich kein „Standard“ ist! ;-]), denn sie fktio­nieren idR genauso in der Xl-Umgebung wie Standard-Fktt. Du willst doch nicht etwa den Pgmmier­Aufwand mit ansetzen, denn der ist für den End­Nutzer der­gleiche wie bei Standard-Fktt, nämlich Null‽
Reine VBA-Sub­routinen wären dagg eher mit komplexen mit­gelie­ferten Xl-Pgmm wie einer statis­tischen Analyse oder einer Pivot-Tabelle zu vgln, wobei die Prozess­Auto­mati­sierung über auf Ereignisse reagierende Pgmm einen spezi­fischen Sonder­fall außer­halb des bisher Erwähn­ten dar­stellt.
n-5. Es ist folglich durchaus relevant, ob eine kurze, einprägsame und nach­voll­zieh­bare Fml das gleiche Ergebnis liefert wie eine ellen­lange, die noch dazu kaum nach­voll­ziehbar ist. Die Teile zB Deiner Fml lassen sich nicht einzeln über­prüfen, da sie keine vollständige Werte­Matrix liefern. Sie ist dem­zu­folge als intuitiv-empirische Arbeit eines Spezia­listen einzu­stufen, die in der normalen Praxis kaum nach­voll­zogen wdn kann. Das ist auch das Problem vieler Lösungen auf excelformeln.de!
Mir geht es nicht darum, komplette komplizierte Fmln durch UDFs zu ersetzen, sondern darum, dem Fkts­Angebot von Xl sinn­volle, aber leider bis­lang fehlende Kompo­nenten hinzu­zu­fügen, also um eine Erwei­terung des Bestands an uni­ver­sellen Tools zum Selber­machen, quasi „Lego-Bausteine“ wie Lupo es so schön bildlich ein­prägsam nennt. Dass darunter dann auch verschie­dene Lösungs­Varianten eines im Grunde gleichen Problem­Kreises zu finden sind, ist dem kogni­tiven Prozess geschul­det. Letztlich ist das bei klassischer Fml-Erstel­lung ja auch so (ohne beide vom Ziel her mit­ein­ander vgln zu wollen!).
n-6. Damit wird wohl nun einerseits klar, warum ich von unten ange­fangen habe und anderer­seits, dass meine UDFs durchaus von mir gesetzte Ansprüche erfüllen, nur nicht immer jede alle gleicher­maßen oder in gleicher Weise. Dafür wäre wohl ein System aus noch kleineren Teilchen, die wie Zahn­rädchen inein­ander­greifen, besser geeignet. So etwas könnte man dann aber (ver­ständ­licher­weise) nicht mehr posten, denn das würde eine Art „Fort­setzungs­roman“ ergeben. Und dafür ist wohl ein Forum wie dieses nicht der rechte Ort!
Gruß + FrOst, Luc :-?


  

Betrifft: AW: dazu hier und heute nur kurz ... von: ... neopa C
Geschrieben am: 16.04.2017 10:50:03

Hallo Luc, hallo lupo1,

... dass ich Eure Beiträge gelesen habe, jetzt aber gleich wieder offline gehen muss.

Schöne Feiertage dann noch.

Gruß Werner
.. , - ...


  

Betrifft: Na, dann viell heute...? ;-) orT von: Luc:-?
Geschrieben am: 17.04.2017 05:09:36

FrOstMon! Luc :-?


  

Betrifft: AW: zu Deinen Ausführungen ... von: ... neopa C
Geschrieben am: 17.04.2017 11:14:49

Hallo Luc,

... wäre meinerseits wieder viel "grundsätzliches" wie auch spezielles teils übereinstimmendes und teils abweichendes festzustellen bzw. zu erwidern. Da dies aber einerseits den Rahmen einer thread-Diskussion endgültig sprengen würde und anderseits aber auch meine Fähigkeit meine Gedanken hierzu nachvollziehbar darzulegen, hier "nur" folgendes:

Einig sollten wir uns u.a. darin sein, das viele Forenfragesteller vordergründig nur die Lösung ihres jeweiligen aktuellen Problems interessiert (ich denke sogar, das dies bei weit mehr als 2/3 der Fragesteller der Fall ist). Aber sicher wird von Einigen auch nach Hilfe zur Selbsthilfe oder nach optimalen Lösungen gesucht.

Von den Forumshelfer haben die meisten unterschiedliche Berufe, Qualifikation, Fähigkeiten und Erfahrungen und verfolgen auch unterschiedliche Zielstellungen mit Ihren Beiträgen zur Lösungsfindung. Sie sind auch meist unterschiedliche motiviert (Fragestellung, Interesse, zur Verfügung stehende Zeitfond ... manchmal auch nur nach "Tagesform").

Diesbzgl. gibt es mE jede Menge Unterschiede zwischen sehr vielen Helfern, wie auch in deren unterschiedlichen Lösungsansätzen zu einer gestellten Problematik. Ich finde es jedoch folgerichtig wie gut, wenn es immer wieder Personen gibt, die über den Tellerrand hinaus schauen und nach Alternativen bzw. erweiterten und oder besseren Lösungsansätzen suchen.

Die Zielstellung meiner Exceltätigkeit ist eine andere als Deine. Meine beschränkte sich auch zu Berufszeiten fast ausschließlich auf Forenstätigkeit, weil Exceln (ohne VBA) für mich nur ein Hobby war und ist, mit dem ich zum Einen meine grauen Gehirnzellen etwas aktiviert halten möchte. Zum Anderen empfand und empfinde ich einfach Freude an Formellösungen, egal von wem diese auch immer erstellt wurden/werden.

Du betrachtest Deine UDFs gleichzeitig zur Erweiterung der von Excel standardmäßig bereitgestellten Standardfunktionalitäten und damit gleichzeitig auch zu verbesserten und vereinfachten (Formel-)Lösungsansätzen. Ich hab dies nie bestritten. Ich habe lediglich mehrmals geschrieben, dass es dazu mE (zwingend) notwendig wäre, dass Du auf einer Plattform diese UDFs für Jedermann einfacher zugänglich (als nur im Herber Archiv) und ausreichend dokumentiert bereitstellst. Lupo1 hat Dir nun zumindest für die Veröffentlichung eine Möglichkeit angeboten.

Deine UDFs werde ich mich erst dann wirklich bedienen, wenn meine vorgenannte Voraussetzungen gegeben sind. Ich weiß sehr wohl, dass die Dokumentation einer Lösung eine unbeliebte Tätigkeit für die meisten Programmierer darstellt. Aber als jahrzehntelanger Anwender von verschiedensten von einfachen bis recht komplexen Programmen, weiß ich erst Recht, dass ein Programm ohne oder mit unzureichender Dokumentation von den allermeisten potentiellen Anwendern abgelehnt wird und sei es auch noch so leistungsfähig.

Sieh also in meinen Beiträgen dazu nicht vordergründig die Kritik sondern das was meinerseits damit auch gemeint ist. Ob und inwieweit meine Beiträge wiederum für Deine Zielstellung hilfreich sind bzw. sein können, will ich mir nicht anmaßen sondern kann es nur hoffen.


Gruß Werner
.. , - ...


  

Betrifft: Nur Quittung, keine Diskussion! Gruß owT von: Luc:-?
Geschrieben am: 17.04.2017 20:39:14

:-?


  

Betrifft: Zu den Deinen, ... von: Luc:-?
Geschrieben am: 19.04.2017 18:01:34

…Werner:
1.Absatz: OK, kannst Du ja ggf auch per eMail tun.
2.Absatz: Unbestritten.
3.Absatz: Dito.
4.Absatz: Finde ich auch. ;-]
5.Absatz: Nachvollziehbar; ich helfe mir (und ggf Anderen) dabei auch mit UDFs und befreie mich so von einem Teil der MS-Xl-Ket­ten. Außerdem interessiert mich eher der größere Zusammenhang eines spezi­fischen Problems als seine Konkreta, so dass ich folg­lich das Problem zu verallgemeinern suche. Es soll übrigens auch Leute geben, die hobby-mäßig gern Tabellen basteln, mit Fmln und allem, was es so gibt und sie auch beherrschen. Ich habe vor einem halben Jhd mal gern welche gezeichnet… ;-)
6.Absatz: Ich hatte mal eine gefunden, die hat der dortige Betreiber aber gelöscht - passte ihm wohl nicht. Hier gab's vor Jahren auch mal einen Ansatz zu Ähnlichem - wurde auch eingestellt und gelöscht - der Aufwand war HWH zu hoch. Und überall sonst muss ich bitten und setze mich unnötigerweise Bewertung und ggf Zensur aus → nee, hab' ich nicht nötig! Lupo hatte schon mal Ähnliches angeboten, klappte nur nicht wg Mängeln seiner WebSite. Über das neue Angebot muss ich noch nachdenken…
7.Absatz: Dazu schreibt auch B.Plumhoff Interessantes, allerdings in English (auch zu 5.). Aber hatte ich nicht auch Dir vor Jahren ein entsprd AddIn zum Test angeboten (kann mich aber auch irren!)? Ist zZ aber ohnehin nicht mehr opportun, weil über­arbei­tungs­be­dürf­tig.
8.Absatz: Die sehe ich idR auch so, obwohl mir scheint, dass manche einem mephisto­phelischen Geist bzw Gedanken ent­sprungen sein könnten… ;-]
Aber inzwischen treibt mich ja mehr als UDFs um; in gewisser Weise die zuvor erwähnten „Zahn­rädchen“…
Gruß, Luc :-?


  

Betrifft: 2 Anm. von: lupo1
Geschrieben am: 16.04.2017 09:25:55

a) Im Unternehmen nicht erlaubtes VBA - und Performance eines Modells:

Das ist sicher ein Grund. Und ich bin auch kein Freund von (massenhaften) Functions. Aber im Sinne einer Kapselung kann man Functions natürlich super innerhalb von abarbeitenden Subs einsetzen. Und da bleibt Luc's Allrounder-Gedanke absolut aktuell. Eine Sub benötigt entsprechend weniger Gehirnschmalz, wenn sie sich abgeschlossener und getesteter Functions bedienen kann. Ganz im Sinne des halbwegs strengen Bernd Plumhoff in http://sulprobil.com/ .

b) Unterschiedliche Anzahl von Trennzeichen:

Dazu gibt es eigentlich nur eine Antwort: Dann "ist das Problem doch erst richtig kaputt", bzw.: Was willst Du denn dann für ein Ergebnis haben? Kein .CSV würde sich doch so etwas erlauben, und, wenn doch, dann in einer völlig anderen Aussage (variable Sammlung von Daten in einem Satz, die aber dann keine Vertikal-Analyse will, wie hier unser MAX).


  

Betrifft: Der gute B.Ph. hat dort aber noch mehr ... von: Luc:-?
Geschrieben am: 16.04.2017 20:22:45

…geschrieben, Lupo,
wobei ich dem meist zustimmen würde. Allerdings gibt's auch Ausnahmen, u.a. seine Verweise auf Namens­Konventionen und PgmmierRegeln lt RVBA. Wenn ich der Erfinder der UngNotat wäre, würde ich mir eine derartige Sinn­Entstellung meiner Intentionen, wie sie die MS-Win-Pgmmierer aufgebracht haben und Reddick dort fest­schreibt, verbitten. Das ist nicht die „reine Lehre“, sondern ein Misch­masch aus ggf Sinn­vollem und Sinn­losem. Im End­effekt läuft das auf die Notation des Datentyps als Namens­Präfix hinaus, wobei er noch Unter-Datentypen schafft. Der Erfinder wollte aber den Ver­wen­dungs­zweck, nicht den Typ der Daten präfixieren! Dadurch können letztlich irre­führende Angaben ent­stehen, die von UN-Geg­nern zurecht als „Warzen“ bezeich­net wdn! Außerdem gibt's in VBA ja ohnehin die Möglich­keit, den Daten­typ auch per 1.Namens­Buch­staben fest­zu­legen!
Auch die mehr oder weniger pauschale Ein­schät­zung von Matrix­Fmln (inter­essanter­weise mit zT gleicher Begründung wie neopa sie formuliert) miss­fällt mir eher. Außerdem ist das Negative mehr auf plurale MxFmln mit Monster-Fmln ausgerichtet und lässt eine Typen­Einteilung ver­missen → folglich nur an der „Ober­fläche bemessen“!
Interessant ist hingegen seine Xl-/VBA-Karriere­stufen-Dar­stellung (man beachte den roten Kasten! ;-]). Danach ist der Nur-TabBlatt-Experte, also Nur-Fml-Spezialist, eine Sack­gasse in der „Eigen­Evolution“! Na, und dann geht's auch gleich gg Fml-Kom­pendien & Co! Das deckt sich zwar zT mit meinen eigenen Ansichten, ist so pauschal aber abzu­lehnen. Es sollte doch beachtet wdn, dass Xl ursprünglich nicht für Massen-DV gedacht war! Da gab und gibt es ja andere, schnellere Möglich­keiten der Daten-Vor­ver­dichtung!
Deine Bevorzugung von Hilfsspalten (falls ich mich recht erinnere) hast Du ggf auch von dieser WebSite; aller­dings stellt B.Ph. Anwendung guter UDFs, deren Quell­Code vorliegt, dem nahezu gleich (falls ich das recht inter­pre­tiere) und ist wg Nicht-Vor­liegen des­selben auch gg so manche Xl-Standard­Fkt. Ich fürchte nur, dass er nicht ganz auf dem Lfden ist, denn Ver­teiler-Fktt wie AGGREGAT scheinen unberück­sich­tigt zu sein. Aller­dings scheint er auch neuere Xl-Fktt wie ZÄHLENWENN mit Skepsis zu betrachten, weshalb seine Meinung zu AGGREGAT schon inter­essant wäre.
Nun ja, das ist natürlich die Sicht eines Pgmmierers, die unsere Fml-Spezialisten sicher zu relati­vieren wissen — Hobby ist nun mal Hobby und muss nicht gleich in eine (berufliche) Karriere münden, zumal in ihrem/unserem Alter… ;-]
FrOst, Luc :-?


  

Betrifft: AW: und dazu ... von: ... neopa C
Geschrieben am: 17.04.2017 11:23:36

Hallo lupo1,

zu a) siehe meinen heutigen Beitrag an Luc und
zu b) mit .CSV nicht aber z.B. direkt in Excel oder mit einer .TXT schon. Aber die Möglichkeit Datenwerte mit unterschiedlicher Anzahl von Trennzeichen analog mit der meinem Formelvorschlag auszuwerten, ist wohl auch nicht so interessant, dass es sich lohnt darüber weiter zu diskutieren.

Gruß Werner
.. , - ...


  

Betrifft: ...Interessant schon, nur nicht xl-konform! owT von: Luc:-?
Geschrieben am: 17.04.2017 18:32:21

:-?


  

Betrifft: AW: wieso das denn? Erkenne ich so nicht. owT von: ... neopa C
Geschrieben am: 18.04.2017 13:11:04

Gruß Werner
.. , - ...


  

Betrifft: Nun, wegen der irregulären Matrix, ... von: Luc:-?
Geschrieben am: 19.04.2017 04:09:22

…Werner;
Du hast in Deiner AGGREGAT-Fml allerdings nicht mit der ganzen Matrix, sondern mit 11 vertikalen Vektoren (mit je max 999 Elementen) gearbeitet. Diese wären bei unter­schiedlicher Anzahl von Trenn­zeichen in den Listen­Texten allerdings auch unter­schiedlich lang, was zu Fehler­Werten führt, die AGGREGAT aber ersetzt (oder entfernt), bevor es KGRÖSSTE aufruft. Der Vektor hat also entweder immer die gleiche Länge, was wahr­schein­licher ist, oder auch nicht, enthält aber keine störenden Fehler­Werte mehr. Soll die ganze Matrix einbezogen wdn, würde diese Fml noch länger wdn, falls ebenfalls Positions­Maxima gebildet wdn sollen:
R1:R11: {=AGGREGAT(14;6;INDEX(MTRANS(0+LINKS(TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";SPALTE(A1:K1)*1^ZEILE(A1:A3)))+1;9);FINDEN(";";TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";SPALTE(A1:K1)*1^ZEILE(A1:A3)))+1;9))-1));ZEILE());1)}
Mit meiner nachempfundenen UDF AggregateXk könnte man so direkt die Positions­Maxima bilden:
P1:P11: {=AggregateXk(4;6;INDEX(MTRANS(0+LINKS(TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";SPALTE(A1:K1)*1^ZEILE(A1:A3)))+1;9);FINDEN(";";TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";SPALTE(A1:K1)*1^ZEILE(A1:A3)))+1;9))-1));ZEILE()))}
Nebenbei, damit sind die Ergebnisse aber noch nicht in gleicher Form wie die Ausgangs­daten zu einem ListenText zusammen­gefasst*, was möglicher­weise eben­falls erwünscht ist/war.
Die ganze aus dem ListenText auf Basis Deiner Methode erzeugte Daten­feld­Matrix könnte mit der folgenden pluralen MatrixFml auf einen Zell­Bereich abgebildet wdn:
J1:L11: {=WENNFEHLER(MTRANS(0+LINKS(TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";SPALTE(A1:K1)*1^ZEILE(A1:A3)))+1;9);FINDEN(";";TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";SPALTE(A1:K1)*1^ZEILE(A1:A3)))+1;9))-1));"")}
Für die von Dir verwendeten EinzelVektoren sähen die pluralen MatrixFmln dann so aus:
F1:H1[;F2:H11]: {=MTRANS(WENNFEHLER(0+LINKS(TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";ZEILE(A1)))+1;9);FINDEN(";";TEIL(";"&A$1:A$3&";";FINDEN("!";WECHSELN(";"&A$1:A$3&";";";";"!";ZEILE(A1)))+1;9))-1);""))}
Wollte man nun die QuellTexte so ändern, dass im 2.u.3. alle doppelten Werte und die einzelne 0 entfernt würden, käme als AGGREGAT-Basis nach Deiner Methode, in Matrix­Konstanten­Form notiert, Folgendes heraus:
{2;3;3}
{3;5;5}
{3;6;6}
{5;8;8}
{9;12;12}
{9;17;17}
{14;23;23}
{20;26;#WERT!}
{20;#WERT!;#WERT!}
{23;#WERT!;#WERT!}
{26;#WERT!;#WERT!}
AGGREGAT kann damit ja umgehen, aber auch mit einer Matrix wie dieser:
{2.3.3;3.5.5;3.6.6;5.8.8;9.12.12;9.17.17;14.23.23;20.26.#WERT!;20.#WERT!.#WERT!;23.#WERT!.#WERT!;26.#WERT!.#WERT!}
Deshalb gehe ich davon aus, dass die FehlerWerte grundsätzlich eher ersetzt als eliminiert° wdn, zumal AGGREGAT primär für Berech­nungen bestimmt ist. So entsteht letzt­endlich eine reguläre Matrix, die bei F-Wert-Ersatz auch von den aufge­rufenen Xl-Fktt ver­arbeitet wdn kann. Genau deshalb habe ich auch nicht xl-konform geschrieben!
—————
* Ergebnis als Listentext: Habe bisher keinen direkten Weg der Zusammenführung der Ergebnisse zu einem ListenText gefunden!
° Dass für die 1. 13 Fktt nur Bereichsbezüge möglich sind, hat ja nichts mit der Ergebnisform zu tun. INDEX soll, falls möglich, Bereichsbezüge liefern, AGGREGAT muss das nicht (wie schon der Name andeutet). Meine UDF NoErrRange zB soll aber wie INDEX Bereichsbezüge liefern, weshalb Zellen mit Fehler­Werten eliminiert wdn, was zu diskreten Bereichen führen kann, die idR nicht direkt auf Xl-Bereiche abgebildet wdn können.


Morrn, Luc :-?


  

Betrifft: Ach ja, es gibt doch einen direkten Weg ... von: Luc:-?
Geschrieben am: 20.04.2017 18:23:51

…der ErgebnisZusammenfassung, Werner &all,
aber bisher nur mit einer Fml außer Konkurrenz, die ich deshalb und wg einer gewissen Begrenzt­heit und Umständ­lich­keit, sowie einer unpublizierten UDF nicht in die Zusammen­fassung auf­ge­nommen hatte. Das hole ich hiermit nach, aber nur für eine zusam­men­fas­sende Fml:

 ABCDEFGHIJ
1
2;3;3;5;9;9;14;20;20;23;261.Werte:3333333 
3;5;6;6;8;12;12;17;23;23;262.Werte:5555555 
0;3;5;6;6;8;12;12;17;23;233.Werte:6666666 
3;5;6;6;9;12;14;20;23;23;264.Werte:6666666 
 5.Werte:9999999 
Maxima der Positionen6.Werte:12121212121212 
B:C: duale MatrixFmln7.Werte:14141414141414 
D;F: singulare MatrixFmln8.Werte:20202020202020 
A4;E;G;H;I: normale Fmln9.Werte:23232323232323 
 10.Werte:23232323232323 
(vwendete UDFs idR im Archiv)11.Werte:26262626262626FmlLängen
A4:=VJoin(Couple(VSplit(A1;";";1;1);VSplit(A2;";";1;1);VSplit(A3;";";1;1);-6);";")Couple-Vs1.6(unpubliziert)VJoin-Vs1.4(im Archiv)VSplit-Vs1.1(im Archiv)79
B1:C1[;B2:C11]: {=WAHL(SPALTE(A:B);ZEILE()&".Werte:";MAX(INDEX(VSplit(A$1:A$3;";";1);ZEILE($1:$3);ZEILE())*1^ZEILE($1:$3)))}VSplit-Vs1.1(im Archiv)106
D1[:D11]: {=MAX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99))}    75
E1[:E11]:=MAX(INDEX(--TEIL(WECHSELN(";"&A$1:A$3;";";WIEDERHOLEN(" ";99));ZEILE(A1)*99;99);))    83
F1[:F11]: {=MAX(INDEX(TxEval("{"&VJoin(WECHSELN(A$1:A$3;";";",");";")&"}");;ZEILE()))}VJoin-Vs1.4(im Archiv)  74
G1[:G11]:=MAX(INDEX(TxEval("{"&VJoin(INDEX(WECHSELN(A$1:A$3;";";","););";")&"}");;ZEILE()))VJoin-Vs1.4(im Archiv)  82
H1[:H11]:=MAX(INDEX(TxEval(VJoin(VSplit(A$1:A$3;";";1);",;";2));;ZEILE()))VJoin-Vs1.5(unpubliziert)VSplit-Vs1.1(im Archiv)65
I1[:I11]:=MAX(INDEX(VSplit(A$1:A$3;";";1);;ZEILE()))  VSplit-Vs1.1(im Archiv)43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Gruß, Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "Max Wert aus zusammengesetzten Werten"