Microsoft Excel

Herbers Excel/VBA-Archiv

Textpassage extrahieren

Betrifft: Textpassage extrahieren von: Stormlamp
Geschrieben am: 08.08.2014 06:43:27

Guten Morgen Zusammen,

ich möchte aus einer Spalte, in der Artikelbeschreibungen stehen, ganz bestimmte Textpassagen extrahieren und zwar DIN-Normen.

Wenn der Begriff "DIN" ind Gro0ßbuchstaben vorkommt, soll dieses komplette Wort und das nächste Wort in die nächste Spalte kopiert werden.

Beispiel, in der Zelle steht:
"Der Artikel entspricht DIN/ISO 781 und ist gebraucht",
soll die Textpassage
"DIN/ISO 781"
in die nächste Spalte übertragen werden und das für die gesamte Spalte, in der der Cursor beim Makrostart steht.

Es wäre prima, wenn mir jemand helfen kann.

Mit freundlichen Grüßen
Hans

  

Betrifft: AW: Textpassage extrahieren von: Hajo_Zi
Geschrieben am: 08.08.2014 07:11:41

Hallo Hans,


Tabelle1

 AB
6Der Artikel entspricht DIN/ISO 781789 und ist gebrauchtDIN/ISO 781789
7Der Artikel DIN/ISO 781 und ist gebrauchtDIN/ISO 781
8Der Artikel und ist gebrauchtkeine Angabe

verwendete Formeln
Zelle Formel Bereich N/A
B6:B8=WENN(ISTZAHL(SUCHEN("DIN";A6));TEIL(A6;SUCHEN("DIN";A6);SUCHEN(" ";TEIL(A6;SUCHEN("DIN";A6);SUCHEN("DIN";A6));SUCHEN(" ";TEIL(A6;SUCHEN("DIN";A6);SUCHEN("DIN";A6));1)+1)-1);"keine Angabe")  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.12 einschl. 64 Bit



GrußformelHomepage


  

Betrifft: Suchen unterscheidet nicht die Schreibweise! owT von: Matthias L
Geschrieben am: 08.08.2014 07:18:49




  

Betrifft: AW: aber Finden von: Hajo_Zi
Geschrieben am: 08.08.2014 07:36:31


Tabelle1

 AB
6Der Artikel entspricht Din/ISO 781789 und ist gebrauchtkeine Angabe
7Der Artikel DIN/ISO 781 und ist gebrauchtDIN/ISO 781
8Der Artikel und ist gebrauchtkeine Angabe

verwendete Formeln
Zelle Formel Bereich N/A
B6:B8=WENN(ISTZAHL(FINDEN("DIN";A6));TEIL(A6;FINDEN("DIN";A6);FINDEN(" ";TEIL(A6;FINDEN("DIN";A6);FINDEN("DIN";A6));FINDEN(" ";TEIL(A6;FINDEN("DIN";A6);FINDEN("DIN";A6));1)+1)-1);"keine Angabe")  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.12 einschl. 64 Bit



Gruß Hajo


  

Betrifft: Richtig, Hajo :-) owT von: Matthias L
Geschrieben am: 08.08.2014 07:37:50




  

Betrifft: AW: Textpassage extrahieren von: Stormlamp
Geschrieben am: 08.08.2014 08:02:40

Hallo Hajo,

bei mir funktioniert das leider noch nicht so richtig:

Ich habe den String geändert auf

=WENN(ISTZAHL(FINDEN("DIN";Q5));TEIL(Q5;FINDEN("DIN";Q5);FINDEN(" ";TEIL(Q5;FINDEN("DIN";Q5); FINDEN("DIN";Q5));FINDEN(" ";TEIL(Q5;FINDEN("DIN";Q5);FINDEN("DIN";Q5));1)+1)-1);"")

weil in einer Tabelle das in Spalte "Q" steht. Da die zu bearbeitende Spalte immer unterschiedlich ist, war meine Ideen, die Position des Cursors einzulesen und dann alle Zellen dieser Spalte von 1 bis Ende zu bearbeiten, sonst muss ich immer die Formal manuell anpassen, die Formeln auf alle Zellen übertragen und dann die Formeln durch Werte ersetzen.

Die Funktion selbst bringt bei mir Fehler:
Der Ausgangswert ist:
"Strukturteil DIN-4711A"
das Ergebnis ist
"#WERT!"

Mit freundlichen Grüßen
Hans


  

Betrifft: AW: Textpassage extrahieren von: Hajo_Zi
Geschrieben am: 08.08.2014 08:06:33

Hallo Hans,

Deine Datei konnte ich nicht sehen, Du hast keine verlinkt, da Du die Lösung an Deine Bedingungen selber anpassen wolltest.
Bei mir geht es.
Ich vergleiche jetzt nicht was Du geändert hast.

Gruß Hajo


  

Betrifft: AW: Textpassage extrahieren von: Hajo_Zi
Geschrieben am: 08.08.2014 08:08:10

Hallo Hans,

mal nach Q5 kopiert.

Tabelle1

 QR
5Der Artikel entspricht Din/ISO 781789 und ist gebrauchtkeine Angabe
6Der Artikel DIN/ISO 781 und ist gebrauchtDIN/ISO 781
7Der Artikel und ist gebrauchtkeine Angabe

verwendete Formeln
Zelle Formel Bereich N/A
R5:R7=WENN(ISTZAHL(FINDEN("DIN";Q5));TEIL(Q5;FINDEN("DIN";Q5);FINDEN(" ";TEIL(Q5;FINDEN("DIN";Q5);FINDEN("DIN";Q5));FINDEN(" ";TEIL(Q5;FINDEN("DIN";Q5);FINDEN("DIN";Q5));1)+1)-1);"keine Angabe")  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.12 einschl. 64 Bit



Gruß Hajo


  

Betrifft: AW: Textpassage extrahieren von: Stormlamp
Geschrieben am: 08.08.2014 08:21:40

Hallo Hajo,

auch das funktioniert nicht, siehe https://www.herber.de/bbs/user/91964.xlsx

Mit freundlichen Grüßen
Hans


  

Betrifft: AW: Textpassage extrahieren von: Hajo_Zi
Geschrieben am: 08.08.2014 13:18:12

Hallo Hans,

vergleiche Deine Text in dem ersten Beitrag mit dem Text in der Datei.
Ich erstelle die Lösung für das was im Beitrag dargestellt wurde. Wird diese Darstellung geändert, überlasse ich anderen die Lösung, da ich schon eine Lösung erstellt hatte und dafür Zeit investiert habe. Ich arbeite nicht für den Papierkorb.

Gruß Hajo


  

Betrifft: FINDEN() im geWECHSELN() ten ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 08:15:07

Hallo Hans,

... Deine neuen Angaben entsprechen auch nicht mehr Deinen ersten Angaben. Wir können nicht vorausschauend an alles denken, beim Erstellen einer Formel und alles wünschenswerte ist sowieso nicht 100% realisierbar. Nachfolgend eine kürzere Formel, die das bisher bekannte jedoch realisiert. Formel R5 nach unten kopieren bzw. rechts neben den auszuwertenden Text.

 QR
6Der Artikel entspricht Din/ISO 781789 und ist gebrauchtkeine Angabe
7Der Artikel DIN/ISO 781 und ist gebrauchtDIN/ISO 781
8Der Artikel entspricht DIN 277 und ist gebrauchtDIN 277
9Strukturteil DIN-4711ADIN-4711A
10 keine Angabe

Formeln der Tabelle
ZelleFormel
R6=WENNFEHLER(TEIL(Q6;FINDEN("DIN";Q6); FINDEN("#";WECHSELN(TEIL(Q6;FINDEN("DIN";Q6); 99); " ";"#";2))-1); "keine Angabe")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

 QR
6Der Artikel entspricht Din/ISO 781789 und ist gebrauchtkeine Angabe
7Der Artikel DIN/ISO 781 und ist gebrauchtDIN/ISO 781
8Der Artikel entspricht DIN 277 und ist gebrauchtDIN 277
9Strukturteil DIN-4711ADIN-4711A
10 keine Angabe

Formeln der Tabelle
ZelleFormel
R6=WENNFEHLER(TEIL(Q6;FINDEN("DIN";Q6); FINDEN("#";WECHSELN(TEIL(Q6;FINDEN("DIN";Q6); 99); " ";"#";2))-1); "keine Angabe")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4


Gruß Werner
.. , - ...


  

Betrifft: AW: FINDEN() im geWECHSELN() ten ... von: Stormlamp
Geschrieben am: 08.08.2014 08:28:29

Hallo Werner,

vielen Dank, Deine Funktion klappt sehr gut.

Du schreibst, in meinem ersten Beitrag hätte ich mich nicht präzise genug ausgedrückt. Dann tut es mir leid, es für einen Excelspezialisten nicht ausreichend genau formuliert zu haben, aber ich hatte bereits im Startbeitrag von einem Makro gesprochen, was automatisch die ganze Spalte bearbeitet, in der der Cursor steht und nicht von einer Funktion.

Mit freundlichen Grüßen
Hans


  

Betrifft: AW: FINDEN() im geWECHSELN() ten ... von: Stormlamp
Geschrieben am: 08.08.2014 08:31:58

Sorry, muss mich korrigieren,

auch bei dieser Formel kommt nicht das richtige Ergebnis, siehe Upload-Datei
https://www.herber.de/bbs/user/91964.xlsx

Mit freundlichen Grüßen
hans


  

Betrifft: da steht aber nicht meine Formel ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 08:35:56

Hallo Hans,

... meine Formel in Q5 sieht so aus:
=WENNFEHLER(TEIL(Q5;FINDEN("DIN";Q5);FINDEN("#";WECHSELN(TEIL(WECHSELN(Q5;"-";" ")&" ";FINDEN("DIN"; Q5);99);" ";"#";2))-1);"keine Angabe")

Gruß Werner
.. , - ...


  

Betrifft: AW: da steht aber nicht meine Formel ... von: Stormlamp
Geschrieben am: 08.08.2014 08:38:19

Das ist nur die Musterdate als Auslöser, auch wenn die dortige Formel durch Deine Formel ersetzt wird kommt nicht das richtige Ergebnis heraus

Gruß
Hans


  

Betrifft: was zu belegen wäre, ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 08:46:28

Hallo Hans,

... hast Du sie wirklich getestet? Wenn ja, hättest Du dies nicht geschrieben.

Ich kann die Formel übrigens auch so schreiben, dass anstelle hier dem konkreten Q5 ein Ausdruck steht, der allgemein nur den Text auswertet, der z.B. exakt links neben der Ergebnisformelzelle steht.

Aber wenn Du eine VBA-Lösung, dann wird Dir Jochen weiterhelfen.


Gruß Werner
.. , - ...


  

Betrifft: AW: da steht aber nicht meine Formel ... von: Stormlamp
Geschrieben am: 08.08.2014 08:42:42

Hallo Werner,

nehme alles zurück, Deine Formel funktioniert. Wenn Ich jedoch den Bindestrich wegnehme und nur noch DIN4711A steht, dann funktioniert es leider noch nicht.

Gruß
Hans


  

Betrifft: wenn das so ist ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 08:50:33

Hallo Hans,

... hier hatten sich unsere Antworten überschnitten. Aber bzgl. Deiner neuerlichen Feststellung ...erinnere Dich bitte auch an meine erste Aussage: "Wir können nicht vorausschauend an alles denken, ..."

Definiere doch bitte eindeutig zusammenfassend, welche Möglichkeiten gefunden werden sollen. Das ist sowohl für eine Formellösung als auch eine VBA-Lösung notwendig.

Gruß Werner
.. , - ...


  

Betrifft: AW: wenn das so ist ... von: Stormlamp
Geschrieben am: 08.08.2014 08:57:40

Hallo Werner,

hier die Definition:

Wird in einer Zelle der Teilstring "DIN" gefunden, so schreibe dieses komplette Wort und wenn vorhanden das folgende Wort in die nächste Zelle rechts daneben, unabhängig, welche Zeichen sonst noch enthalten sind.

Beispiele:
"xxx DIN 123 xxx" = "DIN 123"
"DIN 123 xxx" = "DIN 123"
"DIN-123 xxx" = "DIN-123"
"xxx DIN123" = "DIN123"
"DIN123 " = "DIN123"
"xxx DIN-123XXX xxx" = ""DIN-123XXX"

Mehr ist mir nicht an Möglichkeiten eingefallen

Mit freundlichen Grüßen
hans


  

Betrifft: dann ein weiteres WECHSELN() und GLÄTTEN() ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 09:05:18

Hallo Hans,

... für Q5: =WENNFEHLER(TEIL(Q5;FINDEN("DIN";Q5);FINDEN("#";WECHSELN(TEIL(GLÄTTEN(WECHSELN(WECHSELN(Q5;"DIN";"DIN ");"-";" "))&" ";FINDEN("DIN";Q5);99);" ";"#";2))-1);"keine Angabe")

Gruß Werner
.. , - ...


  

Betrifft: AW: dann ein weiteres WECHSELN() und GLÄTTEN() ... von: Stormlamp
Geschrieben am: 08.08.2014 09:09:37

Hallo Hans,

danke, nun ist die Funktion perfekt und dagegen kommt bestimmt keine noch so unsinnige Benutzereingabe an.

Und nochmal vielen Dank für Deine Geduld

Mit freundlichen Grüßen
Hans


  

Betrifft: Du scheinst zufrieden zu sein ... soch ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 09:23:22

Hallo Hans,

... was ist mit dem Eingangstextteil "xxx DIN/ISO 781 xxx"

Was ist damit?

Gruß Werner
.. , - ...


  

Betrifft: AW: Du scheinst zufrieden zu sein ... soch ... von: Stormlamp
Geschrieben am: 08.08.2014 09:49:58

Hallo Werner,

Du hast Recht, genau die Variante hatte ich nun nicht mehr getestet, da sie bereits in der ersten mail stand und genau die bringt jetzt nicht mehr das richtige Ergebnis :-(

Hättest Du dafür noch eine Lösung? Und natürlich würde ich auch gerne Dein Angebot annehmen, dass sich Deine Formel immer auf die Zelle links daneben bezieht. Bei so guten Hilfestellungen nehme ich alles, was ich bekommen kann:-)

Mit freundlichen Grüßen
Hans


  

Betrifft: also doch ... nun dann ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 12:35:11

Hallo Hans,

... nun da braucht es für dies noch eine weiter Teilformeleinfügung:

=WENNFEHLER(TEIL(Q2;FINDEN("DIN";Q2);FINDEN("#"; WECHSELN(TEIL(GLÄTTEN(WECHSELN(WENN(ISTFEHL(FINDEN("ISO";Q2));WECHSELN(Q2;"DIN";"DIN ");Q2) ;"-";" "))&" ";FINDEN("DIN";Q2);99);" ";"#";2))-1);"keine Angabe")

Gruß Werner
.. , - ...


  

Betrifft: Endgültige Version?! von: Stormlamp
Geschrieben am: 08.08.2014 14:36:43

Hallo Werner,

prima, danke, ich hoffe, dass nun alle Möglichkeiten abgedeckt sind.

Ich habe Deine Formel noch umgestellt, sodass sie sich jetzt immer auf die Zelle links daneben bezieht.

=WENNFEHLER(TEIL(INDIREKT(WECHSELN(ADRESSE(1;SPALTE()-1;4);1;)&ZEILE());FINDEN("DIN"; INDIREKT(WECHSELN(ADRESSE(1;SPALTE()-1;4);1;)&ZEILE()));FINDEN("#"; WECHSELN(TEIL(GLÄTTEN(WECHSELN(WENN(ISTFEHL(FINDEN("ISO";INDIREKT(WECHSELN(ADRESSE(1;SPALTE()-1;4); 1;)&ZEILE())));WECHSELN(INDIREKT(WECHSELN(ADRESSE(1;SPALTE()-1;4);1;)&ZEILE());"DIN";"DIN "); INDIREKT(WECHSELN(ADRESSE(1;SPALTE()-1;4);1;)&ZEILE()));"-";" "))&" ";FINDEN("DIN"; INDIREKT(WECHSELN(ADRESSE(1;SPALTE()-1;4);1;)&ZEILE()));99);" ";"#";2))-1);"keine Angabe")

Es ist zwar eine grausig lange Formel geworden, aber sie funktioniert :-)

Danke nochmals und schönes Wochenende
Hans


  

Betrifft: nein, bitte nicht so ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 16:22:15

Hallo Hans,

... INDIREKT() kann viel kürzer und vor allem effizienter durch INDEX() ersetzt werden!
Mir stellt sich jedoch nur die Fragen, ob Du das 1. wirklich so brauchst und 2. jetzt noch brauchst?

Gruß Werner
.. , - ...


  

Betrifft: na gut, dann pobiere ich halt den INDEX von: Stormlamp
Geschrieben am: 08.08.2014 16:46:08

Hallo Werner,

jetzt hatte ich mir gerade einmal selbst auf die Schulter geklopft, dass ich zwei Lösungen in eine zusammen-gefriemelt habe und das Ergebnis funktioniert sogar ... nun kommt ein Veto von Dir :-( ... :-)

Stimmt, die tolle VBA-Lösung von Jochen (wobei ich nicht im geringsten verstehe, was da abläuft) ist mir das doch lieber, aber davon unabhängig versuche ich mich durch probieren bei normalen Funktionen etwas schlauer zu machen. Danke für den Hinweis mit INDEX(), ich werde damit mal herumexperimentieren.

Mit freundlichen Grüßen
Hans


  

Betrifft: sorry, hab nicht richtig gelesen ... von: neopa C (paneo)
Geschrieben am: 08.08.2014 09:09:40

Hallo Hans,

... ich denk dann nochmal drüber nach.

Gruß Werner
.. , - ...


  

Betrifft: AW: da steht aber nicht meine Formel ... von: Stormlamp
Geschrieben am: 08.08.2014 08:46:52

Hallo Werner,

Deine Formel funktioniert sehr gut, nur wenn hinter dem DIN-Ausdruck kein Leerzeichen mehr kommt, sondern der Zellinhalt damit endet, funktioniert es nicht.
Sorry, aber ich habe nicht an alle Möglichkeiten gedacht, die den Benutzern alle eingefallen sind
Gruß
Hans


  

Betrifft: AW: Textpassage extrahieren von: JoWE
Geschrieben am: 08.08.2014 08:33:10

Hallo Hans,
vllt. als Makro:

Sub extrahiere_DINISO()
    Dim i As Long, c As Long
    Dim sh As Worksheet
    c = ActiveCell.Column
    Set sh = Sheets("Tabelle1")
    With sh
        For i = ActiveCell.Row To .Cells(Rows.Count, c).End(xlUp).Row
            If InStr(1, .Cells(i, c), "DIN/ISO") > 0 Then
                .Cells(i, c + 1) = Mid(.Cells(i, c), InStr(1, .Cells(i, c), "DIN/ISO"), 99)
                .Cells(i, c + 1) = Left(.Cells(i, c + 1), InStr(9, .Cells(i, c + 1), " ") - 1)
            Else
                .Cells(i, 2) = ""
            End If
        Next
    End With
End Sub

Gruß
Jochen


  

Betrifft: AW: Textpassage extrahieren von: Stormlamp
Geschrieben am: 08.08.2014 08:39:43

Hallo Jochen,

danke für das Makro. Ich habe es in der hochgeladenen datei https://www.herber.de/bbs/user/91964.xlsx ausprobiert, darin funktioniert es leider nicht.

Mit freundlichen Grüßen
Hans


  

Betrifft: AW: Textpassage extrahieren von: JoWE
Geschrieben am: 08.08.2014 08:50:31

Hi,

vllt. so?

Sub extrahiere_DINISO()
    Dim i As Long, c As Long
    Dim sh As Worksheet
    c = ActiveCell.Column
    Set sh = Sheets("24-Rückdrückstift")
    With sh
        For i = ActiveCell.Row To .Cells(.Rows.Count, c).End(xlUp).Row
            If InStr(1, .Cells(i, c), "DIN") > 0 Then
                .Cells(i, c + 1) = Mid(.Cells(i, c), InStr(1, .Cells(i, c), "DIN"), 99)
                On Error Resume Next
                .Cells(i, c + 1) = Left(.Cells(i, c + 1), InStr(9, .Cells(i, c + 1), " ") - 1)
            Else
                .Cells(i, 2) = ""
            End If
        Next
    End With
End Sub

Gruß
Jochen


  

Betrifft: AW: Textpassage extrahieren von: Stormlamp
Geschrieben am: 08.08.2014 09:00:32

Hallo Jochen,

nun funktioniert es zum Teil. Es wäre prima, wenn es egal ist, wie das Tabellenblatt heißt, sondern nur das aktive Tebellenblatt genommen wird und wenn diese Beispiele abgedeckt sind:

Beispiele:
"xxx DIN 123 xxx" = "DIN 123"
"DIN 123 xxx" = "DIN 123"
"DIN-123 xxx" = "DIN-123"
"xxx DIN123" = "DIN123"
"DIN123 " = "DIN123"
"xxx DIN-123XXX xxx" = ""DIN-123XXX"

Mit freundlichen Grüßen
hans


  

Betrifft: AW: Textpassage extrahieren von: Stormlamp
Geschrieben am: 08.08.2014 09:02:38

Hallo Jochen,

diese Modifikation funktioniert nun für alle tabellenblätter, aber nicht alle Beispiele werden gefunden:

Sub extrahiere_DINISO()
    Dim i As Long, c As Long
    Dim sh As Worksheet
    c = ActiveCell.Column
    Set sh = ActiveSheet
    With sh
        For i = ActiveCell.Row To .Cells(.Rows.Count, c).End(xlUp).Row
            If InStr(1, .Cells(i, c), "DIN") > 0 Then
                .Cells(i, c + 1) = Mid(.Cells(i, c), InStr(1, .Cells(i, c), "DIN"), 99)
                On Error Resume Next
                .Cells(i, c + 1) = Left(.Cells(i, c + 1), InStr(9, .Cells(i, c + 1), " ") - 1)
            Else
                .Cells(i, 2) = ""
            End If
        Next
    End With
End Sub
Gruß
Hans


  

Betrifft: AW: Textpassage extrahieren von: JoWE
Geschrieben am: 08.08.2014 12:51:23

hmm, noch'n Versuch (aber dann hab' ich keine Lust mehr, das Wochenende weißt DU?)
Da hängt jetzt noch 'ne Funktion dran!

Sub extrahiere_DINISO()
    Dim i As Long, c As Long
    Dim sh As Worksheet
    c = ActiveCell.Column
    Set sh = ActiveSheet
    With sh
        For i = ActiveCell.Row To .Cells(.Rows.Count, c).End(xlUp).Row
            Cells(i, c + 1) = Mid(Cells(i, c), InStr(1, .Cells(i, c), "DIN"), 99)
            If InStr(1, Cells(i, c + 1), " ") > 0 Then
                Cells(i, c + 1) = Left(Cells(i, c + 1), InStr(InStr(1, Cells(i, c + 1), _
                NumberExtract(CStr(Cells(i, c + 1)))) + 2, Cells(i, c + 1), " "))
            End If
        Next
    End With
End Sub

Function NumberExtract(ByVal strData As String, Optional ByVal lngPos As Long = 1) As Double
    'Dank an Office-Loesung.de (Autor: Phelan XLPH)
    Dim i As Long, strNumber As String, blnNumber As Boolean
       For i = 1 To Len(strData)
          If IsNumeric(Mid$(strData, i, 1)) Then
             strNumber = strNumber & Mid$(strData, i, 1)
             blnNumber = True
          ElseIf blnNumber Then
             strNumber = strNumber & ";"
             blnNumber = False
          End If
       Next
       NumberExtract = CDbl(Split(strNumber, ";")(lngPos - 1))
End Function
Gruß
Jochen


  

Betrifft: Funktioniert bestens! Danke von: Stormlamp
Geschrieben am: 08.08.2014 14:40:46

Hallo Jochen,

vielen Dank für Deine VBA-Lösung. Sie macht genau das Gewünschte.

Ein schönes erholsames Wochenende

Mit freundlichen Grüßen
hans


  

Betrifft: Funktioniert nur, wenn jede Zelle den Begriff enth von: stormlamp
Geschrieben am: 09.08.2014 15:39:41

Hallo Jochen,

nur zur Info:

Ich habe Deinen Code nochmal in verschiedenen Varianten durchprobiert.

Sobald das Makro auf eine Zelle kommt, in der der Begriff "DIN" nicht in Großbuchstaben steht, geht der Debugger auf, statt dass diese Zelle übersprungen wird.

Mit freundlichen Grüßen
Klaus


  

Betrifft: AW: Funktioniert nur, wenn jede Zelle den Begriff enth von: JoWE
Geschrieben am: 10.08.2014 11:00:27


Hallo,

inzw. solltest Du doch eigentlich ein wenig vom Code verstanden haben, mit ein wenig Nachdenken u. vllt. etwas googlen hättest Du die Lösung eigentlich schon selbst finden können.

Aber OK: Andere diese Zeile:
Cells(i, c + 1) = Mid(Cells(i, c), InStr(1, .Cells(i, c), "DIN"), 99)
nach:
Cells(i, c + 1) = Mid(UCase(Cells(i, c)), InStr(1, .Cells(i, c), "DIN"), 99)

Gruß
Jochen


  

Betrifft: Wenn dir Fmln wie im oberen Teil des ... von: Luc:-?
Geschrieben am: 08.08.2014 10:39:08

…Threads im Prinzip genügen, Hans,
du aber eine größere Variabilität benötigst und VBA auch nicht ausgeschlossen ist, solltest du im Archiv mal nach SplitVx suchen. Diese UDF erlaubt die gleichzeitige Trennung eines Textes an unterschiedlichen, definierten Stellen, vor, statt und nach denselben. Wenn du dann noch ein eindeutiges Trennzeichen nach dieser TextPassage angeben kannst, musst du nur noch (zB mit VERGLEICH und Arg1 mit Platzhalter) den zutreffenden Index im so entstandenen Datenfeld ermitteln. Sind mehrere enthalten, muss der VERGLEICH entsprd oft wiederholt wdn.
Gruß, Luc :-?


 

Beiträge aus den Excel-Beispielen zum Thema "Textpassage extrahieren"