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

Zahlenwert suchen u. Zeile löschen

Zahlenwert suchen u. Zeile löschen
04.05.2009 13:57:35
walli
Hallo Allerseits,
ich brauch ein Makro mit dem ich einen Zellenwert suchen kann
und dann die Zeile löschen kann.
Der Zellenwert an 9.Stelle.
Die Tabelle ist sortiert so das die Werte mit den Zahlenwert
ganz unten stehen.
Die gesuchte Zahl ist die 7, soll immer an 9. sein.
Die Zahl 0 0 123 774562 muß also eine 7 sein.
das sollten die Zeilen von von Spalte A:H gelöscht werden
habe leider noch nichts gefunden.
gruß walli

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenwert suchen u. Zeile löschen
04.05.2009 14:24:12
Tino
Hallo,
in welcher Spalte befinden sich diese Zahlen?
Gruß Tino
Wert in Spalte A
04.05.2009 14:34:27
walli
Oh entschuldige, der Wert steht in Spalte A
gruß walli
AW: Wert in Spalte A
04.05.2009 14:37:16
Tino
Hallo,
versuche es mal hiermit.
Sub Beispiel()
Dim Bereich As Range, tempBereich As Range
Dim A As Long

Set Bereich = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 7))

For A = Bereich.Rows.Count To 1 Step -1
  If Not Trim$(Bereich(A, 4)) Like "[0-9]*" Then Exit For
    
    If Bereich(A, 4) Like "?7*" Then
       If tempBereich Is Nothing Then
        Set tempBereich = Bereich.Rows(A)
       Else
        Set tempBereich = Union(Bereich.Rows(A), tempBereich)
       End If
    End If

Next A

If Not tempBereich Is Nothing Then
 tempBereich.Delete
End If

End Sub


Gruß Tino

Anzeige
Korrektur...
04.05.2009 14:51:22
Tino
Hallo,
so ist es besser.

Sub Beispiel1()
Dim Bereich As Range, tempBereich As Range
Dim A As Long
Set Bereich = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8))
For A = Bereich.Rows.Count To 1 Step -1
If Not Trim$(Bereich(A, 1)) Like "[0-9]*" Then Exit For
If Bereich(A, 1) Like "?7*" Then
If tempBereich Is Nothing Then
Set tempBereich = Bereich.Rows(A)
Else
Set tempBereich = Union(Bereich.Rows(A), tempBereich)
End If
End If
Next A
If Not tempBereich Is Nothing Then
tempBereich.Delete xlUp
End If
End Sub


Gruß Tino

Anzeige
es werden alle gelöscht
04.05.2009 16:01:33
walli
Hallo Tino,
es werden alle gelöscht, ich hatt noch 2 Nummern die Leerzeichen
eingesetzt, jetzt sind alle weg.
Ist nicht schlimm...
gruß walli
AW: es werden alle gelöscht
04.05.2009 16:05:50
Tino
Hallo,
dann stimmt Deine Position 9 nicht.
Sind vieleicht mehr leerzeichen dazwischen oder auch davor?
Sind diese davor versuche es mal hiermit

Sub Beispiel1()
Dim Bereich As Range, tempBereich As Range
Dim A As Long
Set Bereich = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8))
For A = Bereich.Rows.Count To 1 Step -1
If Not Trim$(Bereich(A, 1)) Like "[0-9]*" Then Exit For
If Trim$(Bereich(A, 1)) Like "?7*" Then
If tempBereich Is Nothing Then
Set tempBereich = Bereich.Rows(A)
Else
Set tempBereich = Union(Bereich.Rows(A), tempBereich)
End If
End If
Next A
If Not tempBereich Is Nothing Then
tempBereich.Delete xlUp
End If
End Sub


Gruß Tino

Anzeige
leider werden noch alle gelöscht
04.05.2009 16:22:39
walli
Hallo Tino,
wenn ich dein Makro ausführe, werden alle gelöscht !
Es sollen aber nur die 77 gelöscht werden.
Ich habe alle Nummern jetzt RICHTIG gesetzt, Du hattest RECHT,
leider fehletn die Leerzeichen.
gruß walli
AW: es werden alle gelöscht
04.05.2009 16:15:33
Tino
Hallo,
in Deinem Beispiel trifft dies außer auf die Zeile 17 und 21 auf alle Zeilen zu.
Zeile 17 und 21 bleiben erhalten und werden nach oben verschoben.
Gruß Tino
AW: Beispieldatei?
04.05.2009 14:33:26
Daniel
Hi
kannst du mal ne beispieldatei hochladen und markieren, was gelöscht werden soll?
Gruß, Daniel
Deine Musterdatei ist o.k.
04.05.2009 16:04:25
walli
Hallo Chris,
danke deine Musterdatei ist o.k.
werde jetzt noch von Daniel testen.
gruß walli
Das klappt. -)
04.05.2009 16:14:12
walli
Hallo Chris,
es werden nacheinander die Zeilen von unten nach oben gelöscht.
Danke !!!
gruß walli
AW: Formelbasierte Makro-Lösung
04.05.2009 15:27:39
Daniel
Hi
so ganz passt deine Beschreibung nicht zur Aufgabenstellung, den hier ist es die "7" an der 10. Stelle, die über Löschen oder nicht löschen entscheidet.
hier mal eine Formelbasierte Makro-Lösung für deine Beispieldatei:

Sub Löschen()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count).Offset(0, 1)
.FormulaR1C1Local = "=Wenn(Teil(ZS1;10;1)=""7"";"""";0)"
.Formula = .Value
Intersect(Range("A:H"), .SpecialCells(xlCellTypeBlanks).EntireRow).Select
End With
End With
End Sub


dieses Makro selektiert erst Mal nur die zu löschenden Daten, damit du testen kannst, ob das Makro richtig arbeitet.
für den Echteinsatzt musst du das .Select durch .Delete Shift:=xlup oder .Clear oder .ClearContents ersetzen.
fall nicht die korrekten Zeilen selektiert bzw gelöscht werden, musst du dies in der Formel (im Code Fett markiert) anpassen.
Gruß, Daniel

Anzeige
AW: Formelbasierte Makro-Lösung
04.05.2009 16:11:33
walli
Hallo Daniel,
Danke.
Es werden ab I5 0 reingeschrieben, ansonsten werden die Zellen selectiert,
das ist so i.o.
Kann man die Nullen auch weiter nach hinten setzen ?
gruß walli
AW: Formelbasierte Makro-Lösung
04.05.2009 16:17:25
Daniel
Hi
die Spalte zum kennzeichnen der zu löschenden Daten (Blank wird gelöscht , 0 bleibt stehen) wird immer am Ende des genutzen Excelbereichs angefügt., dh wenn noch mehr Spalten vorhanden sind, macht das nichts aus, das Makro passt sich automatisch an.
allerdings sollte diese Spalte am Ende wieder gelöscht werden, das habe ich noch vergessen:

Sub Löschen()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count).Offset(0, 1)
.FormulaR1C1Local = "=Wenn(Teil(ZS1;10;1)=""7"";"""";0)"
.Formula = .Value
Intersect(Range("A:H"), .SpecialCells(xlCellTypeBlanks).EntireRow).Select
.EntireColumn.Delete
End With
End With
End Sub


so sollte es funktionieren und keine Spuren hinterlassen
Gruß, Daniel

Anzeige
Danke Daniel klappt alles ! DANKE an ALLE -)
04.05.2009 16:27:59
walli
Hallo Daniel,
ich glaube ich habe geug Makros.
Es funktioniert ja Danke !
DANKE AN ALLE
gruß walli
AW: Zahlenwert suchen u. Zeile löschen
04.05.2009 14:50:56
Chris
Servus Walli,
alternativ hab ich mal das Makro geschrieben. Mir scheint nämlich deine Zahlenfolge ist nicht ohne Leerstellen aufgebaut (evtl. Text?):

Sub t()
Dim i As Long, rSuche As Range, rFinde As Range, strErste As String, ZeilenArray() As Long, x  _
As Long, k As Long, lauf As Long
Set rFinde = Range("A:A")
Set rSuche = rFinde.Find(What:="7", LookAt:=xlPart, LookIn:=xlValues, SearchDirection:=xlNext)
If Not rSuche Is Nothing Then
strErste = rSuche.Address
Do
ReDim Preserve ZeilenArray(x)
ZeilenArray(x) = rSuche.Row
x = x + 1
Set rSuche = rFinde.FindNext(rSuche)
Loop While Not rSuche Is Nothing And rSuche.Address  strErste
Else
Exit Sub
End If
For i = UBound(ZeilenArray()) To LBound(ZeilenArray()) Step -1
For k = 1 To Len(Range("A" & ZeilenArray(i)))
If Mid(Range("A" & ZeilenArray(i)), k, 1)  " " Then
lauf = lauf + 1
End If
If lauf = 7 And Mid(Range("A" & ZeilenArray(i)), k, 1) = "7" Then
Range("A" & ZeilenArray(i) & ":H" & ZeilenArray(i)).ClearContents
lauf = 0
Exit For
Else
If lauf > 7 Then
lauf = 0
Exit For
End If
End If
Next k
Next i
End Sub


Gruß
Chris

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige