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

Löschen von Zeilen innerhalb einer Zelle

Löschen von Zeilen innerhalb einer Zelle
14.10.2015 20:03:24
Zeilen
Hallo zusammen,
ich beiße mir nun schon seit einiger Zeit die Zähne aus und wende mich deshalb ans Forum. Beispieldatei liegt hier https://www.herber.de/bbs/user/100798.xlsx
Es geht um einen Datensatz mit Emails. In jeder Zeile finden sich die Daten zu einer Email. In der Spalte F findet sich jeweils der Inhalt der Mails.
Problem: In den jeweiligen Zellen der Spalte F steht nicht nur der Text dieser Mail, sondern auch der Text vorheriger Mails. Die jeweiligen Zeilen innerhalb der Zellen der Spalte F beginnen jeweils mit "! !".
Damit ich den Datensatz auswerten kann muss ich alle Zeilen innerhalb der Zellen der Spalte F die mit "! !" beginnen entfernen.
Meine Idee wäre ein Makro/Formel, dass alle Zelleninhalte zwischen „! !“ und dem „Zeichen (10)“ des ASCII_Code (=Zeilenumbruch in Zelle) löscht.
Da die Anzahl der Zeilen je Eintrag variiert, braucht man vermutlich noch ein Abbruchkriterium.
Warum ich es nicht von Hand mache: Der Datensatz enthält mehrere tausend Einträge.
Ich wäre auf alle Fälle dankbar für Eure Hilfe!
Viele Grüße,
Daniel

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen von Zeilen innerhalb einer Zelle
14.10.2015 21:08:09
Zeilen
Hi
sollte einfach mit ERSETZEN funktionieren:
ersetze mit der Menüfunktion START - BEARBEITEN - SUCHEN UND AUSWÄHLEN - ERSETZEN
den Text "! !*Zeichen(10)" durch nichts
das Zeichen(10) gibst du in die Maske ein, indem du die ALT-Taste gedrückt hälst und "010" auf dem Ziffernblock der Tastatur eingibst.
der Haken bei "gesamten Zellinhalt vergleichen" darf nicht gesetzt sein.
geht natürlich auch per VBA ganz einfach:
Selection.Replace "! !*" & Chr(10), "", lookat:=xlpart

Gruss Daniel

AW: Löschen von Zeilen innerhalb einer Zelle
14.10.2015 21:30:11
Zeilen
Danke für deine Antwort!
Ich glaube aber ich habe mich falsch ausgedrückt: Ich möchte hauptsächlich den Text zwischen "! !" und Zeichen(10) loswerden.
Also als Beispiel:
__________
betreff
! ! abcdefg [Zeichen(10)]
! ! gfhr [Zeichen(10)]
hallo
__________
...sollte werden zu:
__________
betreff
hallo
__________
Viele Grüße,
Daniel

Anzeige
AW: Löschen von Zeilen innerhalb einer Zelle
15.10.2015 09:18:55
Zeilen
Hallo Daniel,
vielen Dank für das Beispiel-File!
Hat super funktioniert!
Viele Grüße,
Daniel

AW: Löschen von Zeilen innerhalb einer Zelle
15.10.2015 09:55:51
Zeilen
Hi
wo lag dann das Problem?
Gruß Daniel

AW: Löschen von Zeilen innerhalb einer Zelle
14.10.2015 21:42:23
Zeilen
Hallo Daniel,
in den Zelltexten befindet sich auch noch versteckt das Zeichen 13 (Absatzschaltung)
und Text vom Virenscanner ist auch irgendwie überflüssig.
Probiere mal, ob das folgende Makro deine Anforderungen abdeckt.
Gruß
Franz
Sub Zeilen_in_Zellen_entfernen()
Dim wks As Worksheet
Dim Zelle As Range
Set wks = ActiveSheet
Application.ScreenUpdating = False
With wks
With .Range(.Cells(1, 6), .Cells(.Rows.Count, 6).End(xlUp))
For Each Zelle In .Cells
Zelle.Value = fncTextaufbereiten(Zelle.Text)
Next
'Zellbereich neu formatieren
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = False
.ShrinkToFit = True
.MergeCells = False
.EntireRow.AutoFit
End With
End With
Application.ScreenUpdating = True
End Sub
Public Function fncTextaufbereiten(strText As String) As String
'zitierte Zeilen und Virenschutz-Hinweis in Zellen entfernen
Dim strErgebnis As String, intScan As Integer
Dim Pos1 As Long, Pos2 As Long
Dim strScan(1 To 2, 1 To 2) As String
strScan(1, 1) = "! !": strScan(1, 2) = Chr(10)
strScan(2, 1) = "This email has been scanned"
strScan(2, 2) = "anti-virus technology"
strErgebnis = Trim(strText)
If strErgebnis = "" Then Exit Function
'Absatzschaltungen durch Zeilenschaltung ersetzen
strErgebnis = VBA.Replace(strText, Chr(13), Chr(10))
For intScan = 1 To UBound(strScan, 1)
If InStr(1, strText, strScan(intScan, 1)) > 0 Then
Do
Pos1 = InStr(1, strErgebnis, strScan(intScan, 1))
Pos2 = InStr(Pos1, strErgebnis, strScan(intScan, 2))
Pos2 = Pos2 + Len(strScan(intScan, 2)) - 1
strErgebnis = Left(strErgebnis, Pos1 - 1) & Mid(strErgebnis, Pos2 + 1)
Loop Until InStr(1, strErgebnis, strScan(intScan, 1)) = 0
End If
Next
'doppelte Zeilenschaltungen ersetzen durch eine
Do Until InStr(1, strErgebnis, Chr(10) & Chr(10)) = 0
strErgebnis = VBA.Replace(strErgebnis, Chr(10) & Chr(10), Chr(10))
Loop
fncTextaufbereiten = strErgebnis
End Function

Anzeige
AW: Löschen von Zeilen innerhalb einer Zelle
14.10.2015 22:07:49
Zeilen
Hi
naja, in der Beispieldatei ist kein verstecktes Zeichen(13) drin.
höchstens doppelte Zeichen(10), wenn das der Fall ist, gibt man es halt 2x ein.
selbst wenn, meistens ist die Reihenfolge doch Zeichen13-Zeichen10 und dann wird das Zeichen13 automatisch mit entfernt wenn es vorhanden wäre.
Sollte das Zeichen13 im Text drin stehen, dann sollte man es für die weiterverarbeitung in Excel ja sowieso generell entferen. (Cells.Replace Chr(13), "", xlpart)
und auch der Virenscanner-Standardtext lässt sich doch mit ERSETZEN einfacher entfernen als wenn man jede Zelle einzeln durchsucht.
Gruss Daniel

Anzeige
AW: Löschen von Zeilen innerhalb einer Zelle
15.10.2015 08:03:16
Zeilen
Hallo Daniel,
Zeichen 13 ist definitiv in dem Zelltext enthalten und nicht immer in Kombination mit Zeichen 10.
z.B. nach einigen ":"
mit Suchen/Ersetzen schaut ein Makro z.B. so aus
Gruß
Franz
Sub Zeilen_in_Zellen_entfernen2()
Dim wks As Worksheet
Dim Zelle As Range
Set wks = ActiveSheet
Application.ScreenUpdating = False
With wks
With .Range(.Cells(1, 6), .Cells(.Rows.Count, 6).End(xlUp))
.Replace What:="! !*" & Chr(10), Replacement:="", lookat:=xlPart
.Replace What:="This email has been scanned*anti-virus technology", _
Replacement:="", lookat:=xlPart
.Replace What:=Chr(13), Replacement:=Chr(10), lookat:=xlPart
.Replace What:=Chr(10) & Chr(10), Replacement:=Chr(10), lookat:=xlPart
End With
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Löschen von Zeilen innerhalb einer Zelle
15.10.2015 09:17:29
Zeilen
Hallo Franz,
vielen Dank! Das hat mir sehr weitergeholfen!
Viele Grüße,
Daniel

345 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige