Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
356to360
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
356to360
356to360
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Texte entfernen und splitten

Texte entfernen und splitten
30.12.2003 08:55:00
Tom
Hallo
Ich habe in diesem Forum folgenden Code erhalten.


Sub Entfernen_und_Splitten()
Dim i, intPosSlash As Integer
Dim wks As Worksheet
' Zeiger auf zu bearbeitendes Worksheet setzen
Set wks = ThisWorkbook.Sheets(1)
' von hinten beginnen
' (gibt sonst komische "Ergebnisse", da
'  Zeilen geloescht werden)
i = wks.UsedRange.Rows.Count
' also von hinten bis zur ersten zu bearbeitenden Zeile
Do While i >= 1
' Zeile loeschen, wenn "TEST" im Zellinhalt gefunden wird
If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") Then
wks.Rows(i).Delete Shift:=xlUp
Else
' Position des ersten Slashes im Zellinhalt suchen
intPosSlash = InStr(1, wks.Cells(i, 1).Value, "/")
' wenn Slash gefunden, dann linken Teil des Zellinhalts bis
' zum Slash in Spalte B uebernehmen
If intPosSlash Then _
wks.Cells(i, 2).Value = Left(wks.Cells(i, 1).Value, intPosSlash)
End If  ' InStr(1, UCase(wks.Cells(i, 1).Value), "TEST")
' Zeilenzaehler neu kalkulieren
i = i - 1
Loop
End Sub


Er soll in Spalte A jene Werte löschen (ganze Zeile), in denen das Wort "Test" nicht vorkommt. Die Werte sind nach folgendem Schema aufgebaut.

06:58:43 10.9.9.99 GET /projects/Test/data/styles/text2.css 401
06:59:32 10.8.8.88 GET /projects/Site/data/styles/text5.css 401

Ausserdem soll der Text von Spalte A nach Spalte B kopiert werden, aber ohne den folgenden Teil: (Ist immer gleich aufgebaut)

06:58:43 10.9.9.99 GET /

Leider funktioniert der Code nicht richtig. Die Werte ohne den Text "Test" werden nicht gelöscht und in die Spalte B wird der erste Teil eingetragen also

06:58:43 10.9.9.99 GET /

anstatt z.B. nur

projects/Test/data/styles/text2.css 401

Wer kann mit weiterhelfen? Vielen dank im Voraus.
Tom

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

Betreff
Datum
Anwender
Anzeige
AW: Texte entfernen und splitten
30.12.2003 09:44:20
Josef Ehrensberger
Hallo Tom,

jetzt sollte es funzen.



Sub Entfernen_und_Splitten()
'modifiziert von Josef Ehrensberger
Dim i, intPosSlash As Integer
Dim wks As Worksheet
' Zeiger auf zu bearbeitendes Worksheet setzen
Set wks = ThisWorkbook.Sheets(1)
' von hinten beginnen
' (gibt sonst komische "Ergebnisse", da
'  Zeilen geloescht werden)
i = wks.UsedRange.Rows.Count
' also von hinten bis zur ersten zu bearbeitenden Zeile
   Do While i >= 1
      If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") Then
      ' Position des ersten Slashes im Zellinhalt suchen
      intPosSlash = InStr(1, wks.Cells(i, 1).Value, "/")
      ' wenn Slash gefunden, dann linken Teil des Zellinhalts bis
      ' zum Slash in Spalte B uebernehmen
         If intPosSlash Then _
         wks.Cells(i, 2).Value = Mid(wks.Cells(i, 1), intPosSlash + 1, Len(wks.Cells(i, 1)))
         Else
      ' Zeile loeschen, wenn "TEST" im Zellinhalt gefunden wird
         wks.Rows(i).Delete Shift:=xlUp
         End If
      ' Zeilenzaehler neu kalkulieren
      i = i - 1
      Loop
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Gruß Sepp
Anzeige
Oups..:-))
30.12.2003 09:52:11
Ramses
Hallo Josef

Sorry, entweder ich habe solange gebraucht oder nicht rechtzeitig akualisiert :-)

Gruss Rainer
AW: Oups..:-))
30.12.2003 09:59:48
Josef Ehrensberger
Guten morgen Rainer!

Ist ja selten, das ich schneller bin als Du!

Ich glaub das liegt an meiner "Zweifinger-Adler-Technik"

bis dann - Sepp
AW: Texte entfernen und splitten
30.12.2003 09:50:47
Ramses
Hallo

Zu 1
Ändere die Zeile

If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") Then

in

If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") = 0 Then

Zu 2
Ändere die Zeile

wks.Cells(i, 2).Value = Left(wks.Cells(i, 1).Value, intPosSlash)

in

wks.Cells(i, 2).Value = Right(wks.Cells(i, 1).Value, Len(wks.Cells(i, 1).Value)-intPosSlash)

Gruss Rainer
Anzeige
AW: Texte entfernen und splitten
30.12.2003 10:10:08
Tom
Hallo Sepp, hallo Ramses

Vielen Dank für eure Hilfe.
Der 2. Teil des Codes funktioniert bestens, nur der erste Teil nicht.
Bei Sepp werden alle Werte in Spalte A gelöscht und bei Ramses wird gar nichts gelöscht.
Für weitere Hilfe besten Dank.
Tom
AW: Texte entfernen und splitten
30.12.2003 10:17:05
Josef Ehrensberger
Hi Tom,

also bei mir läuft der Code problemlos.

Alle Einträge OHNE "Test" werden gelöscht und der Teil nach
dem Slash wird in Spalte "B" eingetragen.

Das ist doch was Du wolltest?

Ich muss jetzt leider weg und kann mich erst später wieder melden.

Gruß Sepp
AW: Texte entfernen und splitten
30.12.2003 10:22:19
Ramses
Hallo

Sorry, aber das ist nicht nachvollziehbar
Auch nach mehrmaligem prüfen löscht die Anweisung

If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") = 0 Then
wks.Rows(i).Delete Shift:=xlUp
Else

alle zeilen korrekt.
Dann stimmt bei dir was nicht.

Gruss Rainer
Anzeige
AW: Texte entfernen und splitten
30.12.2003 10:59:28
Tom
Hallo Rainer

Den Code habe ich in ein Modul der betreffenden Arbeitsmappe eingefügt.
Er sieht jetzt folgendermassen aus:


Sub Entfernen_und_Splitten2()
'modifiziert von Josef Ehrensberger
Dim i, intPosSlash As Integer
Dim wks As Worksheet
' Zeiger auf zu bearbeitendes Worksheet setzen
Set wks = ThisWorkbook.Sheets(1)
' von hinten beginnen
' (gibt sonst komische "Ergebnisse", da Zeilen geloescht werden)
i = wks.UsedRange.Rows.Count
' also von hinten bis zur ersten zu bearbeitenden Zeile
Do While i >= 1
If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") = 0 Then
' Position des ersten Slashes im Zellinhalt suchen
intPosSlash = InStr(1, wks.Cells(i, 1).Value, "/")
' wenn Slash gefunden, dann linken Teil des Zellinhalts bis
' zum Slash in Spalte B uebernehmen
If intPosSlash Then _
wks.Cells(i, 2).Value = Right(wks.Cells(i, 1).Value, Len(wks.Cells(i, 1).Value) - intPosSlash)
Else
' Zeile loeschen, wenn "TEST" im Zellinhalt gefunden wird
wks.Rows(i).Delete Shift:=xlUp
End If
' Zeilenzaehler neu kalkulieren
i = i - 1
Loop
End Sub


Es werden jetzt die Zeilen gelöscht, die den Text "Test" beinhalten, es müssten aber jene gelöscht werden, die "Test" nicht beinhalten.
Wenn du mir nochmals helfen kannst, bin ich dir sehr dankbar.
Tom
Anzeige
Misch Masch...
30.12.2003 11:59:01
Ramses
Hallo

das kommt davon wenn man 2 Codes / Philosopphien mischt :-))

In dem Code den du geschickt hast muss es heissen

If InStr(1, UCase(wks.Cells(i, 1).Value), "TEST") <> 0 Then

Gruss Rainer
Funktioniert. Besten Dank für die Hilfe
30.12.2003 15:55:30
Tom
Herzlichen Dank für eure tolle Hilfe.
Tom
Merci :-) Geschlossen o.T.
30.12.2003 18:40:28
Ramses
...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige