Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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

Teile eines Texts ausgeben.

Teile eines Texts ausgeben.
20.09.2016 11:27:44
Christian
Hallo an euch alle,
ich habe mal eine Frage,
in Spalte D stehen bei mir URLs.
Gibt es eine Formel die den Teil zwischen dem vorletzten und dem letzten "/" ausgibt und dabei die Unterstriche durch Leerzeichen ersetzt?
Danke für eure Hilfe.
Christian

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teile eines Texts ausgeben.
20.09.2016 12:15:51
UweD
Hallo
aber tierisch lang.

Sheet1
 DE
1HTTP://WWW.herber.de/forum/index.htmforum
2HTTP://WWW.herber.de/forum/usw/Das_geht_noch_weiter/index.htmDas geht noch weiter

verwendete Formeln
Zelle Formel Bereich N/A
E1:E2=WECHSELN(TEIL(D1;FINDEN("#";WECHSELN(D1;"/";"#";LÄNGE(D1)-LÄNGE(WECHSELN(D1;"/";""))-1))+1;FINDEN("#";WECHSELN(D1;"/";"#";LÄNGE(D1)-LÄNGE(WECHSELN(D1;"/";""))))-1-FINDEN("#";WECHSELN(D1;"/";"#";LÄNGE(D1)-LÄNGE(WECHSELN(D1;"/";""))-1)));"_";" ")  
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


Gruß UweD
Anzeige
AW: Teile eines Texts ausgeben.
20.09.2016 12:18:27
Christian
Hallo Uwe,
wie lang das ist ist mir egal. Es funktioniert. Danke
Christian
AW: gern geschehen owt
20.09.2016 13:32:59
UweD
AW: alternativ viel kürzer mit AGGREGAT() ...
20.09.2016 14:23:28
...
Hallo Chistian,
... so: =WECHSELN(TEIL(D1;AGGREGAT(14;6;SPALTE(1:1)/(TEIL(D1;SPALTE(1:1);1)="/");2)+1;SUMME(AGGREGAT(14;6;SPALTE(1:1)/(TEIL(D1;SPALTE(1:1);1)="/");{2.1})*{-1.1})-1);"_";" ")
@Luc (wenn Du dies hier lesen solltest)
... mit einer Deiner UDF`s geht es sicher noch viel kürzer. Aber geht das dann auch ohne {} -Formelabschluss?
Hab momentan auch nur XL2010, gibt es in den neueren Versionen eine Text-Funktion, die sich für derartiges "splitten" evtl. anbietet?
Gruß Werner
.. , - ...
Anzeige
Eine mögliche...
20.09.2016 15:49:44
Case
Hallo Werner, :-)
... UDF. Keine so allgemeine wie selbige von Luc, aber für diese Aufgabe sicher ausreichend. Du kannst es dir ja mal anschauen: ;-)
Beispiel UDF...
Servus
Case

AW: dies wäre mir zu speziell ...
20.09.2016 16:16:22
...
Hallo Ralf,
... weil nur auf diese spez. Aufgabe zugeschnitten (wenn auch für VBler für ähnliche Zwecke leicht anpassbar) Wenn UDF-Einsatz erwünscht, wie erlaubt sein sollte, dann würde ich es ähnlich wie Luc sehen und nur wenige allgemeine komplexere zum Einsatz bringen. Diese sollten gut konstruiert und gepflegt sein aber auch entsprechend dokumentiert und einfach im Handling sein. Also am liebsten kleine angehende "Wollmichsäue" ;-)
Gruß Werner
.. , - ...
Anzeige
Ist eigentlich nicht GANZ...
20.09.2016 17:08:58
Case
Hallo Werner, :-)
... speziell, da mit optionalen Parametern. Noch allgemeiner wäre sicher:
Option Explicit
Function fncSplit(strTMP As String, Optional lngTMP As Long = 1, _
Optional strTrenn As String = "/", _
Optional strDelim As String = "_", _
Optional strDelNeu As String = " ") As String
Dim strTeil() As String
strTeil = Split(strTMP, strTrenn)
If UBound(strTeil)  0 Then
fncSplit = Replace(strTeil(UBound(strTeil) - lngTMP), strDelim, strDelNeu)
Else
fncSplit = "Falsche Vorgaben!"
End If
End Function
Aber prinzipiell gebe ich dir recht. Ich habe bei mir in der Arbeit auch einige UDFs im Einsatz, die im Laufe der Zeit gewachsen sind und alles abdecken, was bei mir so anfällt.
In einem Forum müsste man eigentlich erstmal eruieren ob das, was gemacht werdedn soll, häufiger und mit immer wechselnden Parametern gebraucht wird. Da ist eine spezielle UDF eher kontraproduktiv. Formeln muss ich in so einem Fall dann aber auch anpassen.
Auf der anderen Seite ist so eine UDF wie oben auch in 2 Minuten geschrieben bzw. zusammenkopiert. ;-)
Servus
Case

Anzeige
AW: viele ExcelUser sehen das etwas anders ...
20.09.2016 17:32:11
...
Hallo Ralf,
... am liebsten nehmen diese eine Lösung, wo ihr Aufwand möglichst gering ist. In so einem Fall nehmen wieder viele auch in Kauf, dass sie eine angebotene Formellösung nicht nachvollziehen können. Wenn sie VBA einsetzen dürfen und auch können, dann dürfte für die als naheliegende eine möglichst verständliche und /oder einfach handhabbare Lösung zum Einsatz gelangen. Sie denken dann sicherlich in seltenen Fällen so weit, wie das Luc tut und teils voraussetzt.
Gruß Werner
.. , - ...
AW: Ist eigentlich nicht GANZ...
20.09.2016 17:54:27
Daniel
eine kurze Spezielle UDF belastet das Gesamtsystem viel weniger, als eine aufwendig erstellte allgemeine.
in diesem konkreten Fall würde ich aber das Austauschen der Zeichen nicht mit in den Funktionsumfang mit aufnehmen, da es hierfür ja bereits die originäre Excelfunktion Wechseln gibt, die dann mit der UDF kombiniert werden kann.
allerdings würde ich vorsehen, dass man als Position sowohl die Position von links, als auch die Postion von rechts angeben kann.
dh +1 wäre der erste Teiltext, -1 der letzte Teiltext (und 0 gibt den ganzen skalar zurück, damit auch die Frmlfrks ihren Spass haben.
Function TeilText(txt As String, Optional TrKz As String = " ", Optional Position As Long = 1)  _
As Variant
Dim TT() As String
TT = Split(txt, TrKz)
If Position = 0 Then
TeilText = TT
ElseIf Position > 0 Then
TeilText = TT(Position - 1)
Else
TeilText = TT(UBound(TT) + Position + 1)
End If
End Function 
oder man stellt sich wirklich nur die Split-Funktion aus VBA in Excel zur verfügung:
Function ExcelSplit(txt As String, Optional TrKz As String = " ")
ExcelSplit = Split(txt, TrKz)
End Function

und verwendet dann die Funktion INDEX um den Textteil auszulesen.
=Index(Excelsplit(A1;" ");2)
(wobei man dann hier wieder Rechnen muss, wenn man die Position von rechts braucht.
Gruß Daniel
Anzeige
Ja, genau, ...
20.09.2016 20:06:14
Luc:-?
…Werner; ;-)
und bspw meine kürzeste gezeigte Fml ergäbe dann (als MxKonstante dargestellt): {"forum";"Das geht noch weiter";"Trallala und Hoppsassa"}
Ich hatte mich in den letzten Jahren auch dazu entschlossen, meine UDFs ggf Xl-Standard-Fehler­Werte zurückgeben zu lassen, obwohl diese eigentlich nicht differenziert genug sind. Aber einge­führter Standard ist hierbei wohl vorzuziehen.
Im Übrigen halte ich es für einen Irrtum zu glauben, dass eine allgemeiner konstruierte UDF ein System wesentlich mehr belasten würde als eine relativ einfache spezielle. Warum wird dann von vielen immer wieder propagiert, auf xl-eigene Methoden auszuweichen, weil die ja viel schneller wären. VBA-Abläufe sind auch sehr schnell! Es kommt eben nur darauf an, in wieviele Rechen­Operationen der Compiler eine Anweisung zerlegen muss (da sind VglsOperationen mit am aufwendigsten) und welche PgmSchritte letztlich tatsächlich ausgeführt wdn müssen. Das ist bei universellen Xl-Standard­Fktt ja auch der Fall, wobei die anwendungs­universelleren mitunter tatsächlich aufwendiger sind als -beschränktere. Das kann aber bei heutiger Hardware kein Motiv für die Schaffung einer Vielzahl von mehr oder weniger einfachen Insel­Lösungen sein, trotz potenziell größerer Daten­Kapazitäten von Xl, wenn es das schon vor 25 Jahren nicht war. Wer Xl unbedingt als DB gebrauchen will, sollte dann auch die für deren Auswertung bestimmten DB-Fktt verwenden und alle anderen erst auf ein aggregiertes Zwischen­Ergebnis anwenden.
Ich versuche, UDFs für Lücken im XlFktsAngebot, nicht für spezielle Problem­Stellungen zu schreiben. Letztere sind nur insofern interessant, als sie diese Lücken (be-)greifbar machen können. Letztlich muss sich dann alles wieder in den großen Xl-Fml-Baukasten einordnen lassen, denn die reinen Fml-Freaks wollen ja auch ihren Spaß haben… ;-)
Aber Spaß beiseite, der gewöhnliche Xl-Nutzer muss bei etwas Mathe- und Fkts- bzw Fml-Verständnis in die Lage versetzt wdn, sich eine Fml, die sein Problem löst, selbst zusammen­stellen zu können. Und das sollte möglichst keine ellenlange sein, bei der er 3× „um die Ecke denken“ muss.
Gruß, Luc :-?
Anzeige
AW: noch eine grundsätzliche Anmerkung hierzu ...
21.09.2016 11:40:57
...
Hallo Luc,
... die allermeisten Excelnutzer hatten und haben keine Programmiererfahrung (von Schul-/Ausbildungskenntnissen mal abgesehen). Hinzu kommt dass in nicht wenigen Firmen und Büros der Einsatz von nicht autorisierten Makros in Office-Produkten nicht erlaubt oder sogar unterbunden wird. Ich weiß zumindest von so einigen und hatte sogar (anderweitig) Kontakt zu Personen aus einem riesigen US-Konzern, von dem ich u.a. die Aussage erfahren hatte, dass bei denen genau so verfahren wird (also 0-Toleranz gegen Makros von "außen"). Wenn dies dort der nachweisliche Stand vor einigen Jahren war, so ist dies in vielen Firmen der aktuelle Stand.
Dies wird mE von vielen Helfern die oftmals auch aus der "Programmiererecke" stammen und mit Excel arbeiten oftmals teils ignoriert oder einfach nur unterschätzt. Ich jedenfalls hab mir bis dato auf die Schiene geschrieben, mich intensiver mit den auch ohne VBA bereits vorhandenen Möglichkeiten auseinanderzusetzen und auf dieser Basis das mögliche und teils damit auch scheinbar unmögliches zu realisieren.
Eine Anregung dazu hatte ich natürlich von den "Pionieren" der Excelformelisten gezogen. Zu denen zählte und zähle ich neben den durch excelformeln.de bekannten WF, Boris, Jens, Sepp (Burch), Christian (fridgenep) und Franz (FP; der sich leider wie auch Jens und Christian seit Jahren ganz aus der Excellei zurückgezogen hat) noch eine Reihe Weiterer namhafter Personen.
Vielleicht schreckte und schreckt viele Excelnutzer der notwendige Aufwand, um deren Formeln nicht nur zu verstehen sondern selbst zu erstellen bzw. zu entwickeln ab. Kann man verstehen. Nicht verstehen kann ich jedoch, dass viele deshalb (zu) schnell ihren "Seelenfrieden" in VBA suchen, obwohl sie ganz offensichtlich meist noch nicht mal die wesentlichsten Basisfunktionalitäten kennen oder richtig einzusetzen zu wissen, wie aus so mancher Fragestellung in Foren erkennbar ist.
Für die die Makros einsetzen dürfen und wollen aber sich selbst nicht mit VBA auseinandersetzen wollen können UDFs schon ein gute Alternative sein. Doch zu den Randbedingungen dazu hatte ich auch hier schon geschrieben.
Gruß Werner
.. , - ...
Anzeige
Ja, das ist ein HptProblem, ...
21.09.2016 14:10:26
Luc:-?
…Werner;
meist wird ja nur Malware befürchtet, häufig aber auch Ungeschick der eigenen Mitarbeiter. MS ist das recht und motiviert sie kaum, auf der FktsStrecke deutlich nachzubessern. Stattdessen kommen dann diese unsäglichen FktsAufteilungen heraus → mal so tun als ob…
Eine UDF in einer ZellFml kann aber iaR (bis auf wenige SpezialFälle viell) keinen wirklichen Schaden anrichten, nur ggf ein falsches bzw gar kein Ergebnis liefern oder in seltenen Fällen Xl sich aufhängen lassen. Deshalb muss in großen Firmen natürlich von der IT-Abteilung zentral entschieden wdn, was eingesetzt wdn darf und was nicht. Aber hier fragen ja nicht nur deren Mitarbeiter…
Leider sind viele gute Fmln, die nur StandardFktt benutzen, für den Durch­schnitts­Nutzer kaum nach­voll­ziehbar geschweige denn selbst bild- bzw anpassbar, weshalb die an sich gute Idee eines Nach­schlage­werkes für derartiges auch ihre Grenzen hat. Aber diese Fmln stellen selbst wieder eine Art von (empfohlenem) Standard dar, dessen Nutzung durch Admini­stration nicht unter­bunden wdn kann, obwohl hierbei auch mal etwas schief laufen könnte. Gute UDFs im Geist der Xl-Schöpfer sollten sich hier einreihen lassen und selbst solchen Xl-(Ur-)Standard­Ansprüchen genügen, damit Leute, die VBA-basierte Pgmm nutzen dürfen auch einen Vorteil bei gleichen Standards ggüber denen haben, die das nicht dürfen.
Natürlich bleibt dann noch die Frage der DatenWeitergabe, aber die sollte nach außerhalb ohnehin nur in Ausnahmefällen mit Fmln erfolgen.
Luc :-?
Anzeige
Ja, gesehen, ...
20.09.2016 16:38:13
Luc:-?
…Werner;
nein, MS hat es mW bis jetzt wohl nicht für nötig gehalten, das Gegenstück des Verbindens (ich unterscheide hier zwischen elementweisem klassischen Verketten mehrerer Vektoren und neuerem Verbinden aller Elemente eines (oder mehrerer) Vektors(/en) miteinander → wird im Original auch, durch Concatenate und Join, unterschieden), das Trennen, als XlFkt bereitzustellen. Das mag daran liegen, dass es bereits ein VERKETTEN gab, das irgendwie als Vorlage dienen konnte, aber noch nie ein TRENNEN.
Und ja, du hast recht! ;-)
Obwohl Deine Fml nun schon nur noch 67% der Länge von Uwes Fml hat, komme ich mit einer möglichen mit UDFs in Kombi mit TEIL auf 55% — und das ist meine längste Fml, aber mit unver­öffent­lichter TextUmkehrFkt, für die es aber neuerdings ein MS-Pendant geben könnte!
Folgendes wäre möglich, auch in Teilen vertauschbar (ganz ohne MxFmlForm; für A1 ggf D1 setzen!):
55,1% =MaskOn(PalVal(LINKS(TEIL(PalVal(A1);SUCHEN("/";PalVal(A1))+1;999);SUCHEN("/";TEIL(PalVal(A1);SUCHEN("/";PalVal(A1))+1;999))-1));"anu")
28,2% =MaskOn(MaskOn(WECHSELN(A1;"/";"'";CountOn(A1;"/")-1);"mrk'/");"anu")
24,1% =WECHSELN(Splint(A1;"/";ANZAHL2(Splint(A1;"/"))-1);"_";" ")
22,9% =WECHSELN(INDEX(VSplit(A1;"/");CountOn(A1;"/"));"_";" ")
18,4% =Splint(MaskOn(A1;"_";1);"/";CountOn(A1;"/"))
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: und so gesehen ...
20.09.2016 17:38:10
...
Hallo Luc,
... kann ich nur nochmal darauf hinweisen, dass die Kürze einer Lösungsformel (mit oder ohne UDF) zweitrangig ist.
Von Deinen hier vorgestellten UDF-Formeln für die spez. Aufgabenstellung würde ich (jedoch ungetestet) =WECHSELN(Splint(A1;"/";ANZAHL2(Splint(A1;"/"))-1);"_";" ") bevorzugen. Diese ist nicht nur ausreichend kurz und griffig, sondern kommt vor allem mit nur drei Funktionen in der Formel aus, wobei zwei davon einfache Standardfunktionen sind.
Gruß Werner
.. , - ...
..und so gesehen hast du ja auch recht, ...
20.09.2016 19:13:45
Luc:-?
…Werner,
da es ja eher auf die Anzahl der verwendeten Fktt, aber auch darauf ankommt, ob sie in einer Verarbeitungslinie stehen, d.h., das Ergebnis der einen direkt zum Argument der anderen Fkt wird. Das ist allerdings bei keiner der gezeigten Fmln der Fall, weil immer noch eine separate Positions­Ermittlung erforderlich ist. Allerdings wird ein Optimum mit nur 2maliger Verwendung des Original­Textes von 4 Fmln erreicht. Ideal wäre 1×, denn dann wäre auch das Herumlegen der Fml um den Original­Text per VBA einfach möglich.
Luc :-?
AW: Teile eines Texts ausgeben.
20.09.2016 21:38:30
Christian
Hallo an alle, die Beiträge geschrieben haben.
Ich muss zugeben ich habe nun auch Werners Formel getestet, auch die beiden Makrovorschläge von Case, alles was danach kam war mir leider zu hoch um nachzuvollziehen was ihr da schreibt und wie ich das umsetzen soll.
Jedenfalls das was ich getestet habe funktioniert. Danke euch allen.
Christian
AW: gut zu wissen owT
21.09.2016 08:51:06
...
Gruß Werner
.. , - ...

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige