Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Text links und rechts abschneiden

Betrifft: Text links und rechts abschneiden von: Kisska
Geschrieben am: 20.10.2020 18:07:57

Hallo zusammen,

ich schaffe es leider nicht, einen Textteil zu extrahieren.
Bespiel: XX_YYY (YY)_ZZZ ZZZ Z_00_11_2222_333333
Ich brauche das Ergebnis 11.
Das Extrahieren sollte nach dieser Logik funktionieren:
Gebe einen String aus nach dem 4. Unterstrich von links und vor dem 2. Unterstrich von rechts.
Wenn so eine Zeichenkette nicht gefunden wird, wenn es bspw. nur 4 Unterstriche gibt, dann soll nichts ausgegeben werden.

Eine ähnliche Fragestellung habe ich hier gefunden:

https://www.clever-excel-forum.de/Thread-Zelle-ab-bestimmtem-mehrfachen-Zeichen-auslesen

Jedoch schaffe ich es nicht, auf mein Beispiel anzuwenden.

Kann bitte einer helfen?
VG, Kisska

Betrifft: AW: Text links und rechts abschneiden
von: Daniel
Geschrieben am: 20.10.2020 18:29:36

HI
wie sah denn dort der Lösungsvorschlag aus?
du kannst beispielsweise den 4. Unterstrich von links gezielt (also nur diesen) durch ein anderes Zeichen oder Zeichenfolge ersetzen (dazu beim Wechseln als 4. Parameter die 4 angeben, um anzugeben dass der 4. Unterstrich ausgetauscht werden soll), dann bestimmst du die Position dieses Zeichen und kannst damit trennen.
Hilft dir das weiter?
ansonsten schau mal hier:

https://www.herber.de/excelformeln/pages/Bestimmte_Worte_aus_einem_String_herauspicken.html

Gruß Daniel

Betrifft: AW: Text links und rechts abschneiden
von: Nepumuk
Geschrieben am: 20.10.2020 18:32:50

Hallo Kisska,

ein Beispiel:

Public Sub Test()
    Const Bespiel As String = "XX_YYY (YY)_ZZZ ZZZ Z_00_11_2222_333333"
    Dim avntTemp As Variant
    avntTemp = Split(Bespiel, "_")
    If UBound(avntTemp) = 6 Then MsgBox avntTemp(4)
End Sub

Gruß
Nepumuk

Betrifft: AW: Text links und rechts abschneiden
von: Nepumuk
Geschrieben am: 20.10.2020 18:41:13

Hallo Kisska,

oder als Formel:

 AB
1XX_YYY (YY)_ZZZ ZZZ Z_00_11_2222_33333311

ZelleFormel
B1=Extract(A1)

Mit dieser Funktion:

Option Explicit

Public Function Extract(ByRef probjRange As Range) As Variant
    Dim avntTemp As Variant
    avntTemp = Split(probjRange.Text, "_")
    If UBound(avntTemp) = 6 Then
        Extract = Val(avntTemp(4))
    Else
        Extract = ""
    End If
End Function

Gruß
Nepumuk

Betrifft: AW: mit dem Formelansatz von lupo ...
von: neopa C
Geschrieben am: 20.10.2020 18:38:35

Hallo Kisska,

... so: =GLÄTTEN(TEIL(WECHSELN(GLÄTTEN(A1);"_";WIEDERHOLEN(" ";199));5*199-198;199))+0

Gruß Werner
.. , - ...

Betrifft: perfekt ... Frage
von: Kisska
Geschrieben am: 20.10.2020 20:15:54

Hallo Werner,

vielen Dank für diese Lösung! Genau das, was ich gesucht habe!

Ich habe 2 Fragen:
1) Ich habe manche Datensätze mit dem Ergebnis aus einer Zahl und einem Buchstaben, bspw. 1A. Dieses Ergebnis wird jedoch nicht ausgegeben und ich erhalte #Wert!
Lässt sich die Formel ohne viel Aufwand erweitern? Wenn doch zu viel Aufwand, dann werde ich manuell extrahieren.
2) Statt 11 habe ich manche Datensätze mit 00. Als Ergebnis kommt 0 ohne die führende Null. Könntest du mir einen Tipp geben, wie ich 00 anzeigen lasse? Geht es über benutzerdefiniertes Format?

VG, Kisska

Betrifft: AW: perfekt ... Frage
von: Daniel
Geschrieben am: 20.10.2020 20:37:59

Lass einfach das "+0" weg.
Das dient nur dazu, aus dem Resttext eine Zahl zu machen, was für dich aber nicht notwendig ist.

Gruß Daniel

Betrifft: Danke!
von: Kisska
Geschrieben am: 20.10.2020 21:24:33

Besten Dank, Daniel!
VG, Kisska

Betrifft: Mit einer einst f.solche Zwecke geschriebenen ...
von: Luc:?
Geschrieben am: 20.10.2020 21:45:28

…Archiv-UDF geht's so, Kisska:
=PickOn(A1;5;"_")
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon

Betrifft: AW: Wenn Du schon eine alte Socke
von: Sulprobil
Geschrieben am: 21.10.2020 02:32:33

aus Deinem Kleiderschrank präsentierst, dann wasch' und stopf' sie doch bitte.

SCNR,
Bernd

Betrifft: So steht sie im Archiv, nicht in meinen AddIns!
von: Luc:?
Geschrieben am: 21.10.2020 02:53:54

Auf notwendige Korrekturen hatte ich deshalb verwiesen.
(Und ich mir das nicht…! :->)
Luc :-?

Betrifft: AW: Du zeigst hier eine alte müffelnde Socke
von: Sulprobil
Geschrieben am: 21.10.2020 07:51:43

voller Löcher, aber in Deinem Kleiderschrank hast Du noch eine saubere ohne Löcher?

Toll.

Betrifft: Diese alte 'Socke' reicht ja aus und ...
von: Luc:?
Geschrieben am: 21.10.2020 16:12:09

…gibt eine Möglichkeit an, die jenseits von Split liegt und außerdem schon lange im Archiv liegt. In meinen AddIns ist die natürlich auf korrigiertem Stand, den man auch erreichen kann, wenn man den Hinweisen im Archiv folgt. Und ihre Qualität ist kaum schlechter als das, was hier täglich so gepostet wird. Außerdem ist das eine von 2 abgespeckten Varianten einer UDF, die auf Grund ihrer Einbindung in ein ganzes System nicht einzeln publiziert wdn kann und noch leistungsfähiger ist. Sie und ihre Abkömmlinge orientieren sich nicht nur mit ihrem Namen an einer Fkt der Software QlikView von QlikTec, die ich in Xl auch haben wollte und dann noch ausgebaut hatte.
Was hattest du denn vor ca 17-18 Jahren so geschrieben…‽ Ich hatte mich schon vor mehr als 40 Jahren mit Textbe-/-verarbeitung befasst — noch für Großrechner…
Luc :-?

Betrifft: AW: Text links und rechts abschneiden
von: Sulprobil
Geschrieben am: 21.10.2020 16:59:02

Mein Vorschlag:
https://berndplumhoff.gitbook.io/sulprobil/excel/excel-vba-solutions/sbsplit

Betrifft: Fehlt da nicht etwas, ...
von: Luc:?
Geschrieben am: 22.10.2020 03:44:25

…Bernd?
Wie wär's mit 'ner zur Aufgabe passenden Fml dazu‽ → =INDEX(sbSplit(A1;"_";6);5)
Im übrigen ist deine UDF nur eine simple Umsetzung der vbFkt Split, die eigentl nur pgmmierer-tauglich ist und sonst nichts bietet. Da hilft auch nicht, dass du sie neu aufgelegt hast; ihre Basis ist 20 Jahre alt — also aus der Mottenkiste… :->
Morhn, Luc :-?

Betrifft: AW: Guck genauer hin
von: Sulprobil
Geschrieben am: 22.10.2020 05:47:54



Betrifft: Nun ja, Zeile 7 angepasst, aber sonst trifft ...
von: Luc:?
Geschrieben am: 22.10.2020 20:09:13

…mein Geschriebenes zu, Bernd!
Auf INDEX kann bei UDF Splint verzichtet wdn: =Splint(A6;"_";5;5)
Basiert auch auf vbFkt Split!
Luc :-?

Betrifft: AW: Ein weiteres Loch
von: Sulprobil
Geschrieben am: 24.10.2020 11:46:36

ReDim y(0 To l) As String 'Original code: ReDim y(l) As String does not work with Option Base 1


Betrifft: Toll, Option Base 1! Wer das verwendet, ...
von: Luc:?
Geschrieben am: 24.10.2020 16:53:40

…hat selber schuld! Das muss man ja extra angeben, was ich grdsätzlich nicht tue, weil damit rationale Modulo(Mod*, auch in Xl)-/Remainder(Rem*, in VB[A] Mod)-Index-Berechnungen unnötig erschwert wdn.
* Prolog (ISO 1995)
Luc :-?

Betrifft: AW: Guter Programmierstil ist nicht so schwer
von: Sulprobil
Geschrieben am: 24.10.2020 18:15:54

Aber offenbar für Dich, Luc.
Programmier' doch einfach einmal ordentlich, definiere Array-Unter- und Obergrenzen, und verwende keine Variable namens l (klein L), weil sie zu einfach mit 1 (Eins) verwechselt wird.

Betrifft: Was nutzt der beste Programmierstil, ...
von: Luc:?
Geschrieben am: 25.10.2020 04:06:17

…Bernd,
wenn der sich nur auf Klein-Klein bezieht‽ Sind interessante Ansätze und Ideen dann nicht allemal mehr wert? Was treibt dich also wirklich um…?
Nebenbei, ich hätte bei diesen älteren UDFs ganz andere KritikPunkte resp Schwachstellen gesehen als du…
Und VerständnisAutomatismen, die µS seiner Erfindung VB/VBA und deren Compilern und Interpretern spendiert hat, sorgen auch dafür, dass Adapter-Compiler/Interpreter anderer Software damit Probleme haben. Außerdem ist in diesem speziellen Fall nicht einsehbar, warum das bei Option Base 1 derart eingeschränkt ist. Bei der Grundeinstellung kann ich ja auch ReDim y(0) schreiben! Und ich habe noch wesentlich Komplizierteres, das mit dieser Base wohl erst gar nicht fktionieren würde. Also ist das für mich ohnehin inakzeptabel und ich kann dann auch diese Deklarationsform verwenden, zumal sie VBA anbietet, während von der so beliebten []-Schreibweise statt Evaluate in der Hilfe ausdrücklich abgeraten wird.
Und mit Arrays kenne ich mich auch gut aus, wie demnächst hier wieder zu sehen sein wird. Mal sehen, ob du dich dann auch wieder zu Wort melden wirst…
Luc :-?

Betrifft: AW: Toll, Option Base 1! Wer das verwendet, ...
von: Daniel
Geschrieben am: 24.10.2020 18:34:43

naja, echte universelle UDFs berücksichtigen alle Optionen, die der Anwender machen kann.

Betrifft: Von dir habe ich so etwas noch nie gesehen, ...
von: Luc:?
Geschrieben am: 25.10.2020 03:39:59

…Daniel!
Und wenn es um bestimmte, zuvor festzulegende Optionen geht, verwende ich bedingte Kompilierung!
Luc :-?

Betrifft: Und wir sehen hier einen typischen Luc
von: Daniel
Geschrieben am: 25.10.2020 05:44:38

Als Antwort auf ein sachliches Argument gibt es einen Angriff auf der persönlichen Ebene und ein Ablenkungsmanöver.

Betrifft: Hattest du ein sachliches Argument gebracht, ...
von: Luc:?
Geschrieben am: 25.10.2020 19:17:33

…Daniel,
oder dich bloß angehängt, weil du mal wieder eine Gelegenheit gewittert hast, mir was am Zeug zu flicken? Weiß ja nicht, ob dir das B.P. honorieren wird…
Und was sachliche Argumente betrifft, auf dieser Ebene kann man diskutieren, aber bei dir ist das meist sinnlos, weil es typisch für dich ist, bald auf andere Ebenen abzugleiten.
Jedenfalls muss ich immer lachen, wenn irgendein Job-Anbieter Team-Fähigkeit erwartet. Die Erfahrung lehrt aber, dass Konkurrenz das TriebElement ist, was Ergebnis einer Individualisierung aller Glieder der Gesellschaft ist und worauf im Westen Deutschlands schon seit mindestens einem halben Jahrhdt hingearbeitet wird. Jeder will u/o muss der Größte sein und möglichst viele Konkurrenten wegbeißen, was manche so verinnerlicht haben, dass sie das auch noch machen, wenn's gar nicht darauf ankommt. Einfach nur krank!
Und rein sachlich ist Option Base 1 für VBA das, was für Xl Datumswerte 1904 sind — ein kleiner Vorteil wird gewonnen und dafür etliche Nachteile in Kauf genommen.
Luc :-?

Beiträge aus dem Excel-Forum zum Thema "Text links und rechts abschneiden"