Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zu blöd für TEIL

Forumthread: Zu blöd für TEIL

Zu blöd für TEIL
18.03.2021 08:38:53
Marc
Morgen,
offensichtlich stelle ich mich mächtig blöd bei der Nutzung der TEIL-Funktion an.
Folgendes Beispiel:
In Zelle A1 steht der Text "Was auch immer (Test) [0815] - und weiter geht’s"
In Zelle B1 habe ich die Formel =TEIL(A1;FINDEN("[";A1)+1;FINDEN("]";A1)-1) mit dem Ergebnis "0815] - und weiter geht’s"
In Zeile C1 habe ich zur Prüfung des 3. Parameters die Formel =FINDEN("]";A1)-1 mit dem richtigen Ergebnis 27.
Warum bitte zieht in B1 jetzt nicht der 3. Parameter und das Ergebnis lautet wie erwartet "0815"?
Danke für Eure Hilfe vorab.

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zu blöd für TEIL
18.03.2021 08:46:58
ChrisL
Hi
Der 3. Parameter ist die Länge und nicht die Position.
=TEIL(A1;FINDEN("[";A1)+1;FINDEN("]";A1)-FINDEN("[";A1)-1)
cu
Chris

AW: Zu blöd für TEIL
18.03.2021 08:47:36
Yal
Hallo Marc,
=Teil(was; ab wo; wie lang)
und nicht
=Teil(was; ab wo; bis wo)
Daher muss Du in dem dritten Parameter den zweiten abziehen.
=TEIL(A1;FINDEN("[";A1)+1;FINDEN("]";A1)-FINDEN("[";A1)-1)
VG
Yal

Anzeige
AW: Zu blöd für TEIL
18.03.2021 08:57:05
Marc
OMG....ich sag ja zu blöd fürs Offensichtliche.
DANKE!

AW: Zu blöd für TEIL
18.03.2021 09:09:00
Daniel
Es gibt aber auch eine Lösung, die mit "ab wo - bis wo" arbeitet:
=Teil(Links(A1;Finden("]";A1)-1);Finden("[";A1)+1);999)
Gruß Daniel

AW: Zu blöd für TEIL
18.03.2021 16:17:00
Yal
Du meinst "bis wo - ab wo" ;-)

Anzeige
Nicht nur das, ...
19.03.2021 01:21:00
Luc:-?
…Daniel,
es dürfte auch die bisher günstigste (klassische) Fml mit einem Verhältnis von Fkts- zu Quell­Zellen­Auf­rufen von 4:3 sein. Allerdings wäre das postulierte Von-Bis wohl eher als „Quasi“ zu betrachten, wie auch Yal frozzelte. ;-]
Als gleichwertig könnte dann allerdings auch folgd Fml (mit gleichem Verhältnis) gesehen wdn:
=ERSETZEN(LINKS(A1;FINDEN("]";A1)-1);1;FINDEN("[";A1);"")
Ein günstgeres Verhältnis kann dann wohl nur noch mit UDFs (ggf auch neuem SEQUENZ) erreicht wdn:
2:1 → =INDEX(SplitVx(A1;{"["."]"});2)
1:1 → =MaskOn(A1;"num")
Mit einem echten Von-Bis-Positions- bzw -AuswahlEintrag arbeiten zB diese singularen MatrixFmln (im ungünstigeren Verhältnis 6:3):
{=VJoin(Splint(VJoin(VSplit(A1;"";;1);"|");"|";FINDEN("[";A1)+1;FINDEN("]";A1)-1);"")}
{=VJoin(TEIL(A1;ZEILE(INDIREKT(FINDEN("[";A1)+1&":"&FINDEN("]";A1)-1));1);"")}
Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon

Anzeige
Speziell @neopa: Zu INDEX - Wiederentdeckt
21.03.2021 03:39:27
Luc:-?
Morhn, Werner;
bei diesem Bsp ist mir, außer Konkurrenz, wieder eingefallen, wie das bei INDEX mit der Darstellung/Ver­wen­dung eines ganzen DatenfeldAbschnitts in einer Zelle war - per dualer MatrixFml:
{=WAHL({1.2};"";VJoin(INDEX(VSplit(A1;"");ZEILE(INDIREKT(FINDEN("[";A1)+1&":"&FINDEN("]";A1)-1))) &T(ZEILE(INDIREKT(FINDEN("[";A1)+1&":"&FINDEN("]";A1)-1)));"")) }
Bei diesem Bsp ist allerdings nur die 1malige Verwendung der QuellZelle von Vorteil, die Anzahl der Fkts­auf­rufe natürlich nicht, auch wenn man auf die Unterdrückung des Werts einer der beiden Zellen verzichtet. Aber bei gezielter Auswahl sähe das schon etwas besser aus:
{=VJoin(INDEX(VSplit(A1;"");ZEILE(24:27))&T(ZEILE(1:4));"")}
Gruß & schöSo, Luc :-?

Anzeige
AW: hierzu ...
21.03.2021 10:16:54
neopa
Hallo,
... danke für Deine Information.
Aber soweit ich das momentan überblicke, bedarf dies jedoch (D)einer zusätzlichen UDF. Ohne dies ist wohl nicht realisierbar, oder?
Gruß Werner
.. , - ...

Nee, Werner, ...
21.03.2021 14:37:06
Luc:-?
…die UDF ist nur dem speziellen Bsp geschuldet, bei dem alle Werte in einer Zelle vereinigt wdn sollen. Das könnte auch mit TEXTVERKETTEN, das ich nicht habe, fktionieren. Ansonsten kommt es darauf an, was du mit der Auswahl aus einem Datenfeld vorhast. SUMME oder eine andere Fkt, die alle Werte zu nur einem zusammenfasst, sollte ebenfalls fktionieren.
Hierbei gibt's ja 2 Probleme:
1. Die Bildung eines Ausschnittsintervalls per INDEX(…;startIndex):INDEX(…;endIndex) ist nur auf Bereichs­bezüge anwendbar, nicht auf Datenfelder (aus Berechnung von Ausdrücken ohne Zwischen­Spei­cherung - inkl --bereichsBezug).
2. INDEX* benötigt hier einen 2.Anstoß durch Auswahl von mehr als einer Zelle, um alles zu berechnen. Da aber trotzdem nur ein Wert als Ergebnis herauskommt, wird das spezielle Xl-Feature wirksam, das einen einzelnen Wert auf alle Zellen einer Auswahl überträgt, wenn dessen Fml als MatrixFml abgeschlossen wird. Das ist schon bei {=A1} über 2-3 Zellen der Fall, während {=A1:B1} über 3 Zellen in der letzten ZielZelle #NV ergibt.
* Im Grunde genommen bewirkt das nicht INDEX, sondern das Zusammenwirken von INDEX und FmlText-Interpreter.
Probiere das doch mal mit folgenden Fmln aus:
C1:D1: {=VJoin(INDEX(VSplit("alfa[1234]omega";"");ZEILE(6:9))&T(ZEILE(1:4));"")}
F1:G1: {=SUMME(INDEX(VSplit("alfa[1234]omega";"");ZEILE(6:9))*1^ZEILE(1:4))}
C2:D2: {=VJoin(INDEX({1;2;3;4;5;6;7;8};ZEILE(3:5))&T(ZEILE(1:3));"+")}
F2:G2: {=SUMME(INDEX({1;2;3;4;5;6;7;8};ZEILE(3:5))*1^ZEILE(1:3))}
Mit umschließendem WAHL({1.2};…;"") kann man meist den 1. oder hier 2.Wert eliminieren, falls dadurch andere Ergebnisse verfälscht würden. Ansonsten reicht auch eine FormatÜbertrag-VerbundZelle, um den 2.Wert zu verstecken (kann auch beides kombiniert wdn).
Interessant wäre es, zu erfahren, wie die MatrixFml-Automatik in neuesten Xl-Versionen mit dualen MatrixFmln umgeht. Ich vermute ja, dass die immer noch genauso behandelt wdn müssen, weil die Automatik den Unterschied wohl kaum erkennen kann. Aber das müssten andere testen und beantworten…
Gruß, Luc :-?

Anzeige
AW: Nutzen erschließt sich mir noch nicht ...
21.03.2021 15:24:49
neopa
Hallo Luc,
... worin liegt denn der praktische Nutzen so eines Formelkonstruktes wie:
F2:G2: {=SUMME(INDEX({1;2;3;4;5;6;7;8};ZEILE(3:5))*1^ZEILE(1:3))}
in eine Zelle so eine Eingabe gemacht ergibt als Ergebnis nur 9 und in beliebige viele Zellen immer 12
Das gleiche Ergebnis 12 ermittelt man doch einfach mit
{=SUMME({1;2;3;4;5;6;7;8}*(ZEILE(1:8)={3.4.5})}
Gruß Werner
.. , - ...

Anzeige
Tja, wo liegt der Nutzen, ...
22.03.2021 00:30:07
Luc:-?
…Werner…?
Diese Frage stellen sich Mathematiker iaR nicht. Dafür sind dann andere Wissenschaftler bzw Ingenieure zuständig, die froh sind, wenn sie mit einer Methode, die bei ihrer Entwicklung unnütz erschien, mitunter Jahrzehnte oder gar Jhdte später eine Lösung ihres ggw Problems finden können.
Vor mehr als 10 Jahren hatte NoNet mal eine derartige Frage gestellt und als ich Jahre später eine solche Lösung dafür gefunden hatte, konnte er sich nicht mal mehr daran erinnern, so etwas einst gefragt zu haben.
Es gibt natürlich mitunter auch kompliziertere Fälle, die nicht so leicht durch Alternativen ersetzbar sind wie mein 2.SUMME-Bsp, dessen Alternative natürlich auch so lauten könnte:
=SUMMENPRODUKT({1;2;3;4;5;6;7;8}*(ZEILE(1:8)={3.4.5}))
Kämen im Datenfeld auch Texte vor, könnte es dann so aussehen:
{=SUMME(WENNFEHLER({1;"b";3;4;5;"f";"g";8}/(ZEILE(1:8)={3.4.5});""))}
Aber nicht immer ist so deutlich erkennbar, was summiert wdn soll. Außerdem gibt's auch noch alte Xl-Fktt mit numerischer Sortierung, die man so auch auf TeilIntervalle von Datenfeldern anwenden kann:
C15:C22: {=KKLEINSTE(INDEX({8;"b";5;4;3;"f";"g";1};ZEILE(3:5))*1^ZEILE(1:3);ZEILE(1:3))}
Wobei hier ab C18 der Fehler #NV entsteht, den man im Ggsatz zu #ZAHL! der normalen pluralen MxFml …
A15:A22: {=WENNFEHLER(KKLEINSTE({8;"b";5;4;3;"f";"g";1};ZEILE(1:8));"")}
…nicht mit WENNFEHLER beseitigen kann. Allerdings liefert die normale MxFml kein TeilIntervall und der duale Charakter der ersteren wird durch deren Pluralität überdeckt. Der wird aber wieder sichtbar, wenn nur ein Ergebnis­Wert zurückgegeben wdn soll:
D15:D16: {=WAHL({1;2};VJoin(KKLEINSTE(INDEX({8;"b";5;4;3;"f";"g";1};ZEILE(3:5))*1^ZEILE(1:3);ZEILE(1:3)));"")}
(Hier zur Abwechslung mal mit WAHL und untereinander über die 2 Zellen einer VerbundZelle.)
Morhn, Luc :-?

Anzeige
AW: ... da wo man ihn findet ;-) owT
22.03.2021 12:54:17
neopa
Gruß Werner
.. , - ...
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige