9.9k Aufrufe
Gefragt in Tabellenkalkulation von wmei Mitglied (117 Punkte)
Hallo an Alle,
ich benötige Eure Hilfe.
Ich möchte in Spalte A ab Zelle 8 die letzte Zelle mit einem
Wert finden.
In den Zeilen von 8 bis 180 steht eine Formel,
Die Funtion "Range("A8:A" & Worksheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row).Select"
findet aber nur die Zeile 180 wo die letzte Formel steht.
Danke
wim

15 Antworten

0 Punkte
Beantwortet von bitfix Mitglied (229 Punkte)
Zu einer Formel gehört natürlich auch ein Wert.
Also nach welchen Werten suchst du dann?
Soll die letzte Zelle mit dem Wert '0' gefunden werden?
0 Punkte
Beantwortet von wmei Mitglied (117 Punkte)
Hallo bitfix,
die Formel ist eine WENN- Bedingung.
Wenn nicht erfüllt dann "", danach suche ich.
Die dann leeren Zellen sollenn nicht kopiert werden.
wim
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo wim,

versuche es mal mit nachfolgendem Makro. Hier wird mit einer While/Wend-Schleife von Zeile 180 in Spalte A abwärts geprüft, ob der Wert in der Zelle 0 ist. Stimmt dieses Kriterium, ist das die letzte Zeile und die Schleife wird beendet.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Letzten_Zelle_mit_Wert()
Dim intLastRow As Integer
intLastRow = 180
While Cells(intLastRow, 1) = 0
intLastRow = intLastRow - 1
Wend
MsgBox intLastRow
End Sub

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo wim,

angesichts Deiner Info in AW3 würde ich folgenden Code vorschlagen.

Option Explicit

Sub Letzten_Zelle_mit_Wert()
Dim rngZelle As Range, intZeile As Integer
For Each rngZelle In Range("A8:A180")
If rngZelle.Value <> "" Then
intZeile = rngZelle.Row
End If
Next
MsgBox intZeile
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von wmei Mitglied (117 Punkte)
Hallo Oliver, hallo Rainer,
das klappt soweit großes Danke an Euch beide.
Bei Rainer's Formel muß anstatt =0, ="" eingesetzt werden,
sonst bringt er ebenfalls nur die Zeile mit der letzten Formel.
Ich bin nur Amateur, mein Problem mit Euren Formeln ist dann gleich wieder sie so umzulegen , daß die Zellen direkt markiert
werden, so wie es "meine"Formel (von nighty abgekupfert) tut.
Schönen Tag noch,
wim
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo wim,

folgender Code färbt Dir die letzte Wertezelle rot.

Option Explicit

Sub Letzten_Zelle_mit_Wert()
Dim rngZelle As Range, rngBer As Range, intZeile As Integer
Set rngBer = Range("A8:A180")
rngBer.Interior.ColorIndex = xlNone
For Each rngZelle In rngBer
If rngZelle.Value <> "" Then
intZeile = rngZelle.Row
End If
Next
Cells(intZeile, 1).Interior.ColorIndex = 3
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von wmei Mitglied (117 Punkte)
Hallo Rainer,
ich hab mich falsch ausgedrückt.
Mit markieren meine ich "Bereich markieren", für den nächsten Schritt zB. kopieren.
Das Finden des Bereiches ist immer nur die Vorbereitung eines
weiteren Schrittes und macht für mich das Makro dynamisch,
dh., ich muß nicht immer eine feste Zelle anspringen und mich
mit offset weiter bewegen. Ich hoffe Du erkennst was ich meine.
MfG
wim
PS
das mit =0 und ="" war nicht bei Dir sondern bei Oliver
sorry
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo wim,

etwas deutlicher könnte es schon sein.
Was verstehst Du unter "feste Zelle" ?
Welchen Bereich willst Du markieren und kopieren?
Bitte arbeite bei der Fragestellung mit Zell- und Bereichsadressen.

Gruß
Rainer
0 Punkte
Beantwortet von wmei Mitglied (117 Punkte)
Hallo Rainer,
ich habe eine Liste mit 180 Zeilen. In der Spalte A wird der Wert erzeugt der den Text in weiteren Spalten bewirkt.
Vor jedem Ausdruck ändert sich die Anzahl der Zeilen die
einen Wert enthalten. Mit der Formel markiere ich einfach das
Druckbereich um Leerzellen beim Ausdruck zu vermeiden oder
die Werte zu kopieren wenn ich das Formular zu einem bestimmten Zeitpunkt speichern möchte.
MfG
wim
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo wim,

wenn ich Dich richtig verstehe, willst Du nichts anderes als den Druckbereich dynamisch anzupassen, wobei das Kriterium der letzte Wert in Spalte A sein soll.
Das geht nach meiner Meinung auch ohne Makro, wenn man eine Bereichsnamen definiert.
Dazu müsste ich aber wissen, wie die Formel in Spalte A lautet und ob das Formelergebnis ein Zahlen- oder Textwert ist.

Gruß
Rainer
...