Letzte beschriebene Zeile finden, Rest löschen
#1
Guten Tag ihr fleissigen Helfer,
habe eine Tabelle mit Werte in Spalte B - D und eine Formel in Spalte D bis Zeile 5000.
Mit einem Makro finde wird die Zeilennummerder letzten beschriebene Zeile angezeigt.
Wie muss das Makro geändert werden, dass alle nachfogendZellen mit Formel gelöscht werden?
98 für ihre Hilfe und Gruss Martin


Angehängte Dateien
.xlsm   Excel Tabelle letze Zeile suchen.xlsm (Größe: 20,81 KB / Downloads: 25)
Antworten Top
#2
Hallo Martin,

ich habe einen anderen Ansatz für Dich zum Ausprobieren. Bei Deiner Beispieltabelle hat es funktioniert:

Code:
Sub Letzte_Zeile_mit_Wert_finden_Test()
Dim lrow As Long
Dim lrowVisible As Long
Dim k As Long

lrow = Tabelle1.UsedRange.SpecialCells(xlCellTypeLastCell).Row
lrowVisible = Tabelle1.Application.WorksheetFunction.CountIf(Range("E2:E" & lrow), ">0")
k = lrowVisible + 1
        Set Bereich = Tabelle1.Range(Cells(k, 1), Cells(lrow, 5))
        Bereich.ClearContents
End Sub

Du kannst dir Range alternativ auf eine andere Spalte angleichen. In meinem Beispiel habe ich die Spalte "E" eingesetzt um die letzte Zelle mit einer Zahl zu finden. Wenn Du auch negative Ergebnisse in Spalte "E" erwartest, musst Du entsprechend anpassen. Achtung: es werden alle Werte und Formeln unterhalb der letzten beschriebenen Zelle gelöscht!

Grüße

Norbert
Antworten Top
#3
Guten Abend Norbert,
danke für das funktionierende Makro. Leider sucht es nur in Spalte "E" die letzte Zeile.
Ich möchte aber, dass in den Spalten "B" bis "D" gesucht wird, welches die letzte Zeile ist
und dann den Rest bis Zeile 5000 löschen. Also nur die überflüssigen Formeln in Spalte "E".
Wäre froh, wenn du mir das Makro anpassen würdest.
Danke für die Hilfsbereitshaft.
Gruss Martin
Antworten Top
#4
PHP-Code:
Sub Letzte_Zeile_mit_Wert_finden()
   Dim LetzteInhaltZeile As Long
   Dim lrow 
As Long
   Dim Bereich 
As Range
   
   With ActiveSheet
.Range("B:D"'Anpassen
      LetzteInhaltZeile = .Find(What:="*", _
         After:=.Cells(1), _
         LookIn:=xlValues, _
         LookAt:=xlWhole, _
         SearchOrder:=xlByRows, _
         SearchDirection:=xlPrevious, _
         MatchCase:=False).Row
   End With
   '
MsgBox LetzteInhaltZeile 1
   With Tabelle1
        lrow 
= .UsedRange.SpecialCells(xlCellTypeLastCell).Row
        Set Bereich 
= .Range(.Cells(LetzteInhaltZeile 15), .Cells(lrow5))
   End With
   Bereich
.ClearContents
End Sub 
versuchs mal damit.
Antworten Top
#5
Hallo Martin,

noch eine Alternative, - so sollte es auch gehen. Habe es getestet:

Code:
Sub Letzte_Zeile_mit_Wert_finden_Test1()
Dim lrow As Long
Dim lrowVisibleB As Long
Dim lrowVisibleC As Long
Dim lrowVisibleD As Long
Dim k As Long
Dim Bereich As Range

        lrow = 5000
        lrowVisibleB = Tabelle1.Cells(Rows.Count, 2).End(xlUp).Row
        lrowVisibleC = Tabelle1.Cells(Rows.Count, 3).End(xlUp).Row
        lrowVisibleD = Tabelle1.Cells(Rows.Count, 4).End(xlUp).Row

        k = Application.WorksheetFunction.Max(lrowVisibleB, lrowVisibleC, lrowVisibleD) + 1

            Set Bereich = Tabelle1.Range(Cells(k, 5), Cells(lrow, 5))
            Bereich.ClearContents
       
End Sub
Grüße
Norbert
Antworten Top
#6
Guten Tag Norbert,
98  für das Makro. Funktioniert bestens.
Nun habe ich sogar 2 verschiedene Makro. Das ist 35
Gruss Martin

Guten Tag Ralf_b,
98  für das Makro. Funktioniert bestens.
Nun habe ich sogar 2 verschiedene Makro. Das ist  35
Gruss Martin
Antworten Top
#7
Guten Abend Norbert und Ralf
habe mal versucht, beide Makro in meine neue Tabelle einzufügen.
Etwas habe ich falsch gemacht. Erhalte bei beiden eine Fehlermeldung.

        lrow = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
oder
        lrowVisibleB = Datum_ändern.Cells(Rows.Count, 28).End(xlUp).Row
       
Ich kriege es nicht gebacken   92 .     Bitte um eure Hilfe.
Gruss Martin


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 1,79 MB / Downloads: 5)
Antworten Top
#8
Hallo

versuch es bitte mal so:  Bitte aufpassen was Sheetnamen (Reiternamen) und VBA Komponent Namen sind!   Mit With Tabelle6 sollte es auch klappen!

mfg  Gast 123

Code:
Sub Letzte_Zeile_mit_Wert_finden_NobX()
Dim lrow As Long, k As Long
Dim lrowVisibleB As Long
Dim lrowVisibleC As Long
Dim lrowVisibleD As Long

With Worksheets("Datum_ändern")   'oder With Tabelle6    's.VBA Editor
        lrow = 5000
        lrowVisibleB = .Cells(Rows.Count, 28).End(xlUp).Row
        lrowVisibleC = .Cells(Rows.Count, 29).End(xlUp).Row
        lrowVisibleD = .Cells(Rows.Count, 30).End(xlUp).Row

        k = Application.WorksheetFunction.Max(lrowVisibleB, lrowVisibleC, lrowVisibleD) + 1
        .Range(Cells(k, 30), Cells(lrow, 30)).ClearContents
End With
End Sub

Beide Namen kannst du im VBA Editor sehen, da werden sie angezeigt.
Antworten Top
#9
Hallo Gast 123

98   für das modifizierte Makro.

Irgendwie will es bei mir nicht funktionieren.

Was mache ich falsch?

Wenn ich das Makro per Button starte, reagiert es mit dem Eintrag "Datum_ändern" nicht.

Wenn ich es mit dem Eintrag "Tabelle6" starte erhalte ich die Fehlermeldung.



With Worksheets("Tabelle6")  'oder With Tabelle6    's.VBA Editor



Was mache ich falsch? Bitte um Hilfe.

Mfg Martin
Antworten Top
#10
entweder so lrowVisibleB = Worksheets("Datum_aendern")....
oder so lrowVisibleB = Tabelle6.

Umlaute würde ich generell bei vba vermeiden,
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste