Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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
Zeilenanfang bei Wort suchen und Satz...
16.07.2020 09:06:54
Sten
Hallo,
ich habe folgendes Beispiel im Forum gefunden https://www.herber.de/forum/archiv/952to956/954066_txt_Wort_suchen_und_Satz_nach_Excel_uebermitteln.html
und es funktioniert ohne Probleme.
Nur komm ich mit dem "einstellen" des Bereiches für Satzende und Satzanfang nicht klar.
In meiner Beispieldatei sind die Sätze durch folgende Zeichenkette getrennt "-----------------------------------------------------------"
Nur schaffe ich es nicht das im Makro so zu hinterlegen. Kann mir jemand an der Stelle weiterhelfen.
Danke!
Gruß Sten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenanfang bei Wort suchen und Satz...
16.07.2020 09:09:33
Hajo_Zi
Hallo Sten,
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.

Anzeige
Mit einer Formel geht es auch:
16.07.2020 09:24:45
lupo1
A1:
Der Ball ist rund. ----------------------------------------------------------- Eine Kuh muht, und mein Schwein pfeift. Trotzdem ist dieser Satz noch nicht zuende. ----------------------------------------------------------- Das Corona macht uns alle still und stumm, und das Leben ist anders. ----------------------------------------------------------- Tirili und Dadeldu, sagt die Mutter von min Fru.
B1: Corona (als Suchwort)
C1:
=SVERWEIS("*"&B1&"*";INDEX(GLÄTTEN(WECHSELN(TEIL(WECHSELN(WECHSELN(A1;" ";"#");WIEDERHOLEN("-";59);WIEDERHOLEN(" ";999));ZEILE(1:32)*999-998;999);"#";" ")););1;)
Strikt 59 Minuszeichen! Keins mehr, keins weniger!
Maximal 32 "Sätze". Es gingen auch 50 Sätze mit 599/598 statt 999/998.
Anzeige
AW: Zeilenanfang bei Wort suchen und Satz...
16.07.2020 09:25:14
MB12
Hallo Sten,
freundlicher Hinweis: Da hier kostenlos geholfen wird, gehört es sich, die Frage so genau wie möglich zu stellen. Dazu sollte der Fragesteller auch sein Makro (zumindest den betreffenden Teil) mit posten, um dem Helfer die Arbeit leichter zu machen.
LG, Margarete
Hat er doch verlinkt: von J. Ehrensperger ...
16.07.2020 09:27:37
J.
AW: Hat er doch verlinkt: von J. Ehrensperger ...
16.07.2020 09:30:03
J.
Hab ich auch reingesehen - ich war der Meinung, dass er ein Makro gefunden und für seine Zwecke angepasst hatte. Falls das falsch war: Sven, ich nehme alles zurück :-)
AW: Zeilenanfang bei Wort suchen und Satz...
16.07.2020 09:36:55
Daniel
Hi
Txt = "---- ABC --- Satz mit x --- DEF ---"
Pos2 = Instr (Txt, "mit")
Pos1 = InstrRev(Pos2, Txt, "---")
Pos3 = Instr(Pos2, Txt, "---")
MsgBox Mid(Txt, Pos1 + Len("---"), Pos3 - Pos1 - Len("---"))
Gruß Daniel
Anzeige
AW: Zeilenanfang bei Wort suchen und Satz...
16.07.2020 12:28:57
Sten
Also ich versuche es noch einmal.
Diese Makro habe ich verwendet.
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
'Nach einer Idee von http://www.activevb.de
'Angepasst von J.Ehrensberger
Option Explicit
Sub sucheInTextFile()
Dim x As Long, Zeilen() As String, FName As String, sText As String
On Error GoTo ERRORHANDLER
Application.ScreenUpdating = False
FName = Application.GetOpenFilename("Text Dateien (*.txt)," & _
"*.txt")
If FName = "Falsch" Then GoTo ERRORHANDLER
sText = InputBox("Bitte Suchtext eingeben", "Suche", "") 'Suchtext
If sText = "" Then Exit Sub
Range("A:A").ClearContents 'Datenbereich löschen
'Die letzten beiden Parameter geben das linke und rechte
'Begrenzungszeichen einer Zeile an, dies können auch
'mehrere sein. Hier wurde für links und rechts "D" gewählt!
If FindTerm(FName, sText, Zeilen, "D", "D") Then
For x = 0 To UBound(Zeilen) - 1
Cells(x + 1, 1) = Trim$(Zeilen(x))
Next
MsgBox "Es wurden " & UBound(Zeilen) & " Zeilen gefunden!"
Else
MsgBox "Suchbegriff nicht vorhanden!"
End If
ERRORHANDLER:
If Err.Number > 0 Then
MsgBox Err.Number & vbLf & Err.Description, vbExclamation, "Fehler"
End If
Application.ScreenUpdating = True
End Sub
Private Function FindTerm(File As String, s As String, ZZ() As String, _
tl As String, tr As String) As Boolean
Dim c As Long, i As Long, j As Long
Dim FLen As Long, lc As Long, p As Long
Dim v As Long, w As Long
Dim f As Integer
Dim a As String, d As String
Dim buffer As String, old As String
'Dieser Wert gibt die Paketgröße von Get# an. Er kann beliebig
'geändert werden, sollte aber nicht kleiner als die längste
'zu erwartende Zeile des zu druchsuchenden Files sein
Const PS As Long = 1024&
Redim ZZ(0)
'Prüfen ob Parameter plausibel sind
If Len(tl) = 0 Or Len(tr) = 0 Or Len(s) = 0 Or _
Dir$(File, vbNormal) = "" Then
MsgBox ("Paramter stimmen nicht!")
Exit Function
End If
s = LCase(s)
f = FreeFile
Open File For Binary Shared As #f
FLen = LOF(f)
'Anzahl der Durchläufe anhand der Dateigröße ermitteln
p = FLen \ PS
If FLen Mod PS  0 Then p = p + 1
'Schleife starten
For c = 1 To p
buffer = Space$(PS)
Get f, , buffer
a = old & buffer
i = InStr(1, LCase(a), s)
If i  0 Then
'Suchbegriff wurde im aktuellen Paket gefunden
lc = 0
Do
i = InStr(i, LCase(a), s)
If i  0 Then
'Zeilenanfang suchen
v = 1
For j = i To 1 Step -1
d = Mid$(a, j, 1)
'gefunden
If InStr(1, tl, d) Then
v = j + 1
Exit For
End If
Next j
'Zeilenende suchen
w = 0
For j = i To Len(a)
d = Mid$(a, j, 1)
'gefunden
If InStr(1, tr, d) Then
w = j
Exit For
End If
Next j
If w  0 Then
' Zeile auschneiden und in einem Feld speichern
' Hier könnten auch weitere Suchkriterien abge-
' fragt werden.
ZZ(UBound(ZZ)) = Mid$(a, v, w - v)
Redim Preserve ZZ(0 To UBound(ZZ) + 1)
lc = w
End If
i = w
End If
'Weiter schleifen, da der Suchbegriff im Paket ja
'öfters als einmal auftauchen kann
Loop Until i = 0
If lc = 0 Then
'Suchbegriff wurde im aktuellen Paket nicht ge-
'funden. Daher ganzen String für die nächste Runde
'speichern
old = a
Else
'Ab Ende der zuletzt gefundenen Zeile des aktuel-
'len Paketes für die nächste Runde speichern
old = Mid$(a, lc)
End If
Else
'Paket der aktuellen Runde speichern
old = buffer
End If
Next c
Close f
If UBound(ZZ) > 0 Then FindTerm = True
End Function
Darin gibt es den Abschnitt zur Definition der Bereichsgrenzen

'Die letzten beiden Parameter geben das linke und rechte
'Begrenzungszeichen einer Zeile an, dies können auch
'mehrere sein. Hier wurde für links und rechts "D" gewählt!
If FindTerm(FName, sText, Zeilen, "D", "D") Then ....
Diese Formel akzeptiert aber nur 1 Zeichen zum auffinden der Satzgrenzen.
In meiner Textdatei ist nur die Zeichenfolge "------------ usw." als klarer Trenner zwischen den Sätzen vorhanden. Mir würde es reichen wenn ich die das ganze so anpassen könnte das er als Begrenzer nicht nur 1 Zeichen akzeptiert sondern einen beliebige Zeichenkette.
So in der Form etwa
If FindTerm(FName, sText, Zeilen, "ABC", "DEF") Then ....
Und an diesem Punkt komme ich nicht weiter.
Anzeige
Nur mal ne Idee:
16.07.2020 13:12:26
MCO
Hallo Sten!
Ich hab mich mit dem ellenlangen Code jetzt nicht im detail beschäftigt.
Wenn du aber sagst, dass der nur nach einem Zeichen als Trenner sucht, dann gib ihm doch ein Zeichen nachdem du trennen willst.
Vorher modifizierst du noch deinen Text, indem du vorher "59 Minuszeichen (Keins mehr, keins weniger!)" durch ein Zeichen Deiner Wahl ersetzt (Vorschlag:"~")
Dann mit Split trennen und einzeln ausgeben. Fertig.
Morgen gibt´s mehr, schreib mal, wie du klar kommst.
Gruß,MCO

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige