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

Texte mit Wort Thumbnail stehen lassen

Texte mit Wort Thumbnail stehen lassen
24.11.2023 17:05:02
Christian
Hallo,

eine kurze und knackige Frage, wie ich folgendes Problem lösen kann.

Ich habe einen Bereich von A3 bis WB2000. (600 Spalten)

Ich möchte alle Texte, die das Wort thumbnail beinhalten, sowie jeweils die 3 Texte die unterhalb eines dieser Texte stehen behalten, alle anderen Texte möchte ich löschen.
Wie geht das am Sinnvollsten?

Bsp: der Text in S28 beinhaltet das Wort Thumbnail, also soll der Bereich S28 bis S31 nicht gelöscht werden.
Das es Überschneidungen gibt, also der Bereich S29-S31 erneut das wort Thumbnail beinhaltet, ist ausgeschlossen.

Wie mache ich das?

Bspdatei

Die roten Texte sollen gelöscht werden, die schwarzen sollen beibehalten werden. Wie gesagt wenn ein Text das Wort thumbnail beinhaltet, soll dieser, sowie die 3 Zellen drunter behalten werden.
https://www.herber.de/bbs/user/164568.xlsx

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Texte mit Wort Thumbnail stehen lassen
24.11.2023 18:59:20
Yal
Hallo Christian,

bei vernichtenden Aktionen ist es immer ratsam, zuerst mit einer Aktion zu testen, was die Daten nicht löscht. Es ist dann leichter den originale Zustand wiederzuherstellen:

Sub Markieren()

Dim Z As Range 'Z wie Zelle
Dim Text As String
Dim i
On Error Resume Next 'weil wenn in der 3te Zeile etwas 3 Zeilen drüber gesucht wird, kracht es
Worksheets("Tabelle1").Range("A3:R31").interion.Color = xlNone
For Each Z In Worksheets("Tabelle1").Range("A3:R31")
Text = ""
For i = 0 To 3
Text = Text & " " & Z.Offset(-i).Value 'macht aus der akt. Zelle "Z", und die 3 darüber einen Text
Next
If InStr(1, Text, "thumbnail", vbTextCompare) = 0 Then Z.Interior.ColorIndex = 3 'wenn der Text kein "thumbnail" enthält, machen
Next
End Sub


Wenn man sich überzeugt hat, dass es taugt, dann richtig löschen (das Begriff "Sicherungskopie" ist ja bekannt...):
Sub Löschen()

Dim Z As Range 'Z wie Zelle
Dim Text As String
Dim i
On Error Resume Next 'weil wenn in der 3te Zeile etwas 3 Zeilen drüber gesucht wird, kracht es
For Each Z In Worksheets("Tabelle1").Range("A3:R31")
Text = ""
For i = 0 To 3
Text = Text & " " & Z.Offset(-i).Value 'macht aus der akt. Zelle "Z", und die 3 darüber einen Text
Next
If InStr(1, Text, "thumbnail", vbTextCompare) = 0 Then Z.Clear 'wenn der Text kein "thumbnail" enthält, machen
Next
End Sub


VG
Yal
Anzeige
AW: Texte mit Wort Thumbnail stehen lassen
24.11.2023 19:30:16
Christian
Hallo Yal,

es scheint zu funktionieren, aber es dauert und dauert, inzwischen ist er mit dem zweiten Makro seit 5 Minuten dran (und mein Laptop ist sicher nicht das langsamste).
Irgend eine Idee wie man das noch etwas beschleunigen könnte hast du nicht zufällig oder?

Auf jeden Fall schonmal vielen Dank
Christian
nochmal zur Zeit
24.11.2023 19:36:07
Christian
könnte auch daran gelegen haben, dass ich beim ersten Versuch die ersten beiden Zeilen mit einbezogen habe. Hab dann gemerkt, ok, da hab ich was falsch gemacht, dann werden die beiden ja auch gelöscht. Als ich dann das Ganze ab Zeile 3 hab laufen lassen, ging es schon deutlich schneller.
Und funktioniert hat es auch. Danke
Anzeige
AW: Texte mit Wort Thumbnail stehen lassen
24.11.2023 21:15:43
Yal
Hallo Christian,

der Bremser ist wohl das Löschen der einzelne Zellen. Man kann in einem Array arbeiten und diese am Ende zurückschreiben. Sollte bei einem grossen Anzahl an Zellen schneller sein.
Ausserdem kann man 3 Zellen sparen, wenn ein "Thumbnail" gefunden wurde (je nach dem wieviel "thumbnail" vorhanden sind).

Sub Löschen()

Dim i, j, k
Dim Arr
Dim Erg
Const cBereich = "A3:R31"

On Error Resume Next 'weil wenn in der 3te Zeile etwas 3 Zeilen drüber gesucht wird, kracht es
Arr = Worksheets("Tabelle1").Range(cBereich).value
For j = LBound(Arr, 2) To UBound(Arr, 2) 'Spalten
For i = UBound(Arr, 1) To LBound(Arr, 1) Step -1 'Zeilen, von unten hoch
Erg = False
For k = 0 To 3
Erg = CBool(InStr(1, Arr(i - k, j), "thumbnail", vbTextCompare))
If Erg Then
i = i - k
Exit For
End If
Next
If Not Erg Then Arr(i, j) = ""
Next
Next
Worksheets("Tabelle1").Range(cBereich).value = Arr
End Sub


VG
Yal
Anzeige
AW: Texte mit Wort Thumbnail stehen lassen
24.11.2023 19:05:30
Piet
Hallo

kopiere den unteren Code mal in ein normales Modul und starte ihn mit F5 oder +ber den Makro Dialog.
Wenn du drei Zeilen stehen lassen willst must du das ändern: - Cells(rFind.Row, "S").Resize(3, 1) = "Find"

mfg Piet

Sub lthumbnail_stehen_lassen()

Dim SuTxt As String, j, lz1 As Long
Dim rFind As Range, Adr1 As String
SuTxt = "thumbnail"
Columns("S").ClearContents
'Text "thumbnail" suchen
Set rFind = Cells.Find(What:=SuTxt, After:=[a1], LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
Adr1 = rFind.Address
Do 'immer 4 Zeilen mit Find markieren
Cells(rFind.Row, "S").Resize(4, 1) = "Find"
Set rFind = Cells.FindNext(rFind)
Loop Until rFind.Address = Adr1
End If
'nicht markierte Zeilen Rückwärts löschen
For j = lz1 To 3 Step -1
If Cells(j, "S") = Empty Then
Rows(j).Delete shift:=xlUp
End If
Next j
End Sub
Anzeige
AW: Texte mit Wort Thumbnail stehen lassen
24.11.2023 19:09:25
Piet
Nachtrag es gibt einige Überschneidungen, weil der Text in mehreren Spalten, aber verschiedenen Zdeilen vorkommt.
Habe dein Makro jetzt auch getestet...
24.11.2023 19:43:14
Christian
... und befürchte du hast das komplett misverstanden.

Alle Texte in denen thumbnail enthalten ist, sowie die Texte jeweils in den 3 Zellen untendrunter hätten stehen bleiben sollen, alle anderen Zellen (außer Zeile 1 und 2) gelöscht werden sollen.

Oder anhand der Bsp Datei ausgedrückt, alle schwarzen Texte hätten behalten werden sollen, alle roten gelöscht.

Trotzdem schonmal Danke für deine Mühe
Christian
AW: Habe dein Makro jetzt auch getestet...
24.11.2023 20:55:45
GerdL
Moin Christian

Sub Unit()


Const cstrBereich As String = "A3:R31"

Dim S As Long, Z As Long, Arr As Variant

Arr = Range(cstrBereich).Value

For S = 1 To UBound(Arr, 2)
Z = 1
Do
If InStr(LCase(Arr(Z, S)), "thumbnail") Then
Z = Z + 3
Else
Arr(Z, S) = ""
End If
Z = Z + 1
Loop Until Z > UBound(Arr, 1)
Next

Range(cstrBereich).Value = Arr

End Sub

Gruß Gerd
Anzeige
AW: Habe dein Makro jetzt auch getestet...
24.11.2023 21:03:19
Christian
Hallo Gerd,

vielen Dank.
Ich muss dir leider etwas beichten. Ich war davon ausgegangen, dass wo ich eine funktionierende Lösung habe, keine weiteren Vorschläge mehr kommen.
Mit anderen Worten ich habe Yals Vorschlag genutzt und dann mit der Mappe weitergearbeitet.
Neue Daten um es zu testen bekomme ich aber voraussichtlich am Montag, sodass ich am Montag dann auch Rückmeldung geben kann.
Jedenfalls an der Beispieldatei funktioniert es.

Soweit dann erstmal ein schönes Wochenende
Christian
AW: Habe dein Makro jetzt auch getestet...
24.11.2023 22:16:32
Yal
Gerade sehe ich, wie kompliziert ich mich verzettelt habe...

VG
Yal
Anzeige
AW: Texte mit Wort Thumbnail stehen lassen
24.11.2023 19:20:51
Christian
Hallo Piet,

erstmal danke. Ich denke du hast etwas misverstanden. Es sollen nur die 3 Zellen in derselben Spalte unter den jeweiligen Texten mit Thumbnail erhalten bleiben, daher ist es egal was nebendran oder obendrüber steht. In den 3 Zellen untendrunter ist es jedenfalls ausgeschlossen, dass sich Thumbnail wiederholt.

Gruß
Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige