Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1416to1420
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

Teilwert suchen und lösche Zeile

Teilwert suchen und lösche Zeile
03.04.2015 21:27:34
Andreas Winkel

Hallo,
letztes hat ich nen Tritt nötig nun schon wieder ;)
Ich suche einen Teil eines Wertes und will die gesamte Zeile Löschen. Das klappt soweit ganz gut nur leider löscht er nur jede zweite gefundene Zeile!? Kann jemand so nett sein und mir ein denkanstoß geben!? Danke

Private Sub CommandButton15_Click()
Dim sBereich  As Range
Dim sZelle    As Range
Dim suche As Variant
Dim gefunden As Variant
Dim letztezeile As Variant
Dim diezeilewoichbin As Variant
letztezeile = Workbooks("datei.xlsx").Sheets("tabellenname").Cells(1048576, 1).End(xlUp).Row
suche = "254"
Set sBereich = Workbooks("datei.xlsx").Sheets("tabellenname").Range("B2:B" & letztezeile)
For Each sZelle In sBereich
If Left(UCase(sZelle.Value), 3) = suche Then
diezeilewoichbin = Right(sZelle.Address, Len(sZelle.Address) - 3)
Workbooks("datei.xlsx").Sheets("tabellenname").Rows(CStr( _
adresszeile & ":" & adresszeile)).Delete
End If
Next sZelle
MsgBox gelöscht
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilwert suchen und lösche Zeile
03.04.2015 21:50:00
Oberschlumpf
Hi
mit ner Bsp-Datei + Bsp-Daten + dem Code, alles von dir per Upload zur Verfügung gestellt, könnte dir vielleicht einfacher geholfen werden.
Ciao
Thorsten

AW: Teilwert suchen und lösche Zeile
03.04.2015 22:19:11
Andreas Winkel
Hallo Thorsten,
leider gestaltet sich deine bitte sehr schwierig da es sich um ca. 1000 Bsp-Datensätze handelt welche VS sind. Aber villeicht eine Erklärung zur Veranschaulichung!
Erste Kategorie id: 111
Zweite Kategorie id: 222
Dritte Kategorie id: 3333
= 1112223333 o. 4445556666 o. 7778889999
in einer zweiten Datei steht also in der Spalte "B" die id 111222333 und fortlaufend.
Ich will also wenn ich die erste kategorie "111" lösche alle datensätze mit der nummer 1110000000 - 1119999999 löschen oder eben die erste Kategorie "444" dann alle datensätze mit den nummern 4440000000 - 4449999999.

Anzeige
AW: Teilwert suchen und lösche Zeile
03.04.2015 22:47:42
Oberschlumpf
Hi Andreas
a) was ist VS? Kenn ich leider nicht.
b) wo ist denn das Problem, eine neue Bsp-Datei mit nur 3-4 Bsp-Datensätzen zu erstellen, und uns diese Datei dann per Upload zur Verfügung zu stellen?
Zumindest ich hab keine Lust, deinen Job zu machen.
Und ohne Datei kann leider zumindest ich dir nicht helfen. So gut bin ich nicht.
Ciao
Thorsten

VS ist 'very secret' bzw 'VerschlussSache'! owT
04.04.2015 01:15:39
Luc:-?
:-?

Danke owT
04.04.2015 11:54:43
Oberschlumpf

AW: Teilwert suchen und lösche Zeile
04.04.2015 12:45:26
Andreas Winkel
Hallo Thorsten,
ich möchte garnicht jemanden der meinen Job macht, dafür mach ich den viel zu gerne. Ich brauche nur einen Denkanstoß.
LG Andreas

AW: Teilwert suchen und lösche Zeile
04.04.2015 02:25:46
daniel
Hi
Die For-Each-Schleife läuft vorwärts und hat damit beim Löschen von Zeilen das Problem, dass nach einer Löschung immer die nächste Zeile übersprungenen wird, weil diese den Platz der gelöschten Zeile einnimmt, während die Schleife auf die nächste Zeile springt.
Das Löschen von Zeilen geht in den Excelversionen ab 2007 am besten so:
1. Trage in eine Hilfsspalte eine Formel ein, welche alle Zeilen die gelöscht werden sollen mit 0 kennzeichnet und die die stehen leben müssen mit der aktuellen Zeilennummer
=Wenn(links(A2;3)="111";0;Zeile())
Ziehe die Formel bis ans Datenende.
2. Schreibe in die Überschriftenzeile der Hilfsspalte die 0
3. Wende auf die ganze Tabelle die Funktion Daten -Datentools - Duplikate entfernen an, mit der Hilfsspalte als Kriteriumsspalte und er Option "keine Überschrift".
4. Leere die Hilfsspalte.
Per Makro macht man das genau so.
Gruß Daniel

Anzeige
Sollte auch mit '.Find' und '.FindNext' in ...
04.04.2015 04:37:24
Luc:-?
While…Wend-Zyklus fktionieren, zumindest, wenn die zu löschenden Zeilen gemerkt wdn und erst zuletzt auf 1× gelöscht wdn. In diesem Fall sollte es allerdings auch mit For Each-Zyklus fktionieren.
FrOst, Luc :-?

AW: Sollte auch mit '.Find' und '.FindNext' in ...
04.04.2015 11:19:32
Werner
Hallo Andreas,
versuch mal das hier. Sucht und löscht von hinten nach vorne. Ich kann dir aber nicht sagen ob das geschwindigkeitstechnisch problematisch ist.
Option Explicit
Public Sub Suchen_rückwärts()
Dim WS As Worksheet
Dim VSuche As Variant
Dim loErste As Long
Dim loLetzte As Long
Dim i As Long
Application.ScreenUpdating = False
Set WS = ThisWorkbook.Worksheets(1) 'Worksheet anpassen
loErste = 2 'erste Zeile mit Daten ggf. anpassen
loLetzte = WS.Cells(Rows.Count, 1).End(xlUp).Row 'ggf. Spalte anpassen hier A
VSuche = Application.InputBox("Was soll gelöscht werden?", , , , , , , 1) 'InputBox nur Zahlen
If VSuche = 0 Then Exit Sub
For i = loLetzte To loErste Step -1
If Left(UCase(Cells(i, 1).Value), 3) = VSuche Then 'ggf. Spalte anpassen hier A
WS.Cells(i, 1).EntireRow.Delete 'ggf. Spalte anpassen hier A
End If
Next i
Application.ScreenUpdating = True
End Sub
Gruß Werner

Anzeige
AW: Sollte auch mit '.Find' und '.FindNext' in ...
04.04.2015 12:50:00
Andreas Winkel
Danke Werner
auch dein Tip Hilft
ich hab es jetzt so gelösst:
Dim pz As Variant
Dim tp As Long
pz = Workbooks("datei.xlsx").Sheets("tabelle").Cells(Rows.Count, 1).End(xlUp).Rows.Row
'** Durchlauf aller Zeilen
For tp = pz To 2 Step -1 'Zählung rückwärts bis Zeile 2
'Abfragen, ob in der Spalte die ID steht
If Left(UCase(Workbooks("datei.xlsx").Sheets("tabelle").Cells(tp, 2).Value), 3) = TextBox8  _
Then
Workbooks("datei.xlsx").Sheets("tabelle").Rows(tp).Delete Shift:=xlUp
End If
Next tp
Ich danke allen.
LG Andreas

AW: Danke für die Rückmeldung owT
04.04.2015 21:15:47
Werner

AW: Teilwert suchen und lösche Zeile
04.04.2015 12:47:27
Andreas Winkel
Hallo Daniel,
tausend dank der Tip ist heiß, das mit der Überspringenden Zeile bei For-Each war mir bis dato nicht bekannt.
LG Andreas

Anzeige
Das ist bei allen 'For'-Zyklen so, weil der ...
04.04.2015 15:27:22
Luc:-?
…GesamtBereich einmalig bei Start festgelegt wird, Andreas,
und in einem For Each-Zyklus gibt's keinen manipulierbaren Zähler. Ein Lösch-Zyklus wird deshalb in einem For-Zyklus rückwärts oder in einem Do…Loop- bzw While…Wend-Zyklus untergebracht.
Gruß, Luc :-?

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige