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

Letzte Zeile mit 10 Stellen...

Letzte Zeile mit 10 Stellen...
15.03.2018 09:20:50
Max
Hi,
ich möchte gerne die letzte Zelle in Spalte A ermitteln, deren Inhalt genau 10 Stellen hat.
z.B.: 0123456789
Die letzte Zelle Allgemein finde ich bisher so heraus:
Dim lngZeile As Long
lngZeile = Cells(Rows.Count, 1).End(xlUp).Row
Gibt es da eine Möglichkeit?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte Zeile mit 10 Stellen...
15.03.2018 09:30:22
UweD
Hallo
notfalls über Schleife
    Dim i As Long, lngZeile As Long, lng10 As Long
    lngZeile = Cells(Rows.Count, 1).End(xlUp).Row
    For i = lngZeile To 1 Step -1
        If Len(Cells(i, 1)) = 10 Then
            lng10 = i
            MsgBox "Zeile ist Nr. " & lng10
            Exit For
        End If
    Next

LG UweD
Anzeige
AW: Letzte Zeile mit 10 Stellen...
15.03.2018 09:42:53
Max
Funktioniert perfekt. Vielen Dank.
Danke für die Rückmeldung owT
15.03.2018 09:51:30
UweD
AW: Letzte Zeile mit 10 Stellen...
15.03.2018 09:35:02
Daniel
Hi
beispielsweise so:
dim z as long
for z = Cells(Rows.Count, 1).End(xlUp).Row to 1 step - 1
if Len(Cells(z, 1).Value) = 10  then Exit for
Next
Msgbox z

Bei Zahlen wie im genannten Beispiel mit führender 0 müsste man aber genauer drauf schauen, wie die Zahl da steht, als Text oder als formatierte Zahl. dann müsste man ggf .Text anstelle von .Value verwenden.
Gruß Daniel
AW: Letzte Zeile mit 10 Stellen...
15.03.2018 09:44:13
Max
Danke dir auch sehr, funktioniert.
Alternative ohne Schleife
15.03.2018 12:46:47
{Boris}
Hi,
alternativ ohne Schleife (zunächst ohne Fehlerbehandlung, da nur das Prinzip aufgezeigt wird):
MsgBox Range("A:A").Find(what:="**********", LookIn:=xlValues, searchdirection:=xlPrevious).Row
VG, Boris
Anzeige
AW: Alternative ohne Schleife
15.03.2018 13:25:54
Max
Hi Boris, erstmal Danke für die Antwort.
Da meine Datei riesiß ist wäre eine Möglichkeit ohne Schleife wegen der Performance vielleicht sogar vorzuziehen.
Allerdings findet er mir bei dem Code von dir die Allgemeine letzte Zeile und nicht die letzte Zeile mit 10 Stellen.
Wenn ich die Sternchen * mit dem Inhalt, also z.B. 0123456789 ersetze, dan funktioniert es. Er findet dan die letzte Zeile in der "0123456789" steht.
Wenn ich es aber mit den Sternchen als Platzhalter versuche (also 10 mal *) dan holt er mir die (Allgemeine) letzte Zeile und nicht die letzte mit 10 Stellen.
Da sich die Nummer in meiner Datei ständig ändert kann ich aber leider keinen statischen Wert in mein VBA Code schreiben.
Anzeige
AW: Alternative ohne Schleife
15.03.2018 14:20:12
Daniel
Hi
nimm mal ? statt *
* ist der Joker für beliebig viele Zeichen, dh es es egal, ob du nach "*" oder "*********" suchst.
? ist der Joker für genau ein Zeichen und wäre hier der richtige (What:="?")
also solltest du den verwenden.
die Frage ist, ob das wirklich so viel schneller ist.
Schließlich geht auch die .FIND-Funktion in einer Schleife durch die Zellen durch und bricht bei der ersten Fundstelle ab.
wenn du die Schleife etwas schneller machen willst, dann lädst du die Werte vorher in ein Array und gehst dann mit der Schleife durch das Array durch.

dim arr
dim z as Long
arr = Range("A1:A" & Cells(rows.count, 1).end(xlup).Row).value
for z = ubound(arr, 1) to 1 step -1
if Len(arr(z, 1)) = 10 then Exit for
Next
msgbox z
und wie gesagt, bei Ziffernfolgen mit führender 0 müsste man nochmal draufschauen, was dort tatsächlich in den Zellen steht.
Wenn die führende 0 per Zahlenformat hinzugefügt wird, dann hat der Wert in der Zelle ggf nur 9 oder weniger Stellen, auch wenn mehr angezeigt werden.
Gruß Daniel
Anzeige
AW: Alternative ohne Schleife
15.03.2018 14:23:07
UweD
Hallo
müssen es nicht 10 Fragezeichen sein?
MsgBox Range("A:A").Find(What:="?", LookIn:=xlValues, SearchDirection:=xlPrevious).Row
? ist der Joker für genau ein Zeichen
* Joker unabhängig von der Zeichenzahl
LG UweD
Sorry...
15.03.2018 14:23:15
{Boris}
Hi Max,
...ersetz die * durch 10 ?:
?
VG, Boris

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige