• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Laatste waarde in kolom

Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Forummers,

Ik zoek de formule die mij de laatste WAARDE geeft in een kolom; in deze kolom zijn ook formules aanwezig (bv in kol A staat een formule die bv A1 t/m A10 gevuld heeft met een waarde en in A11 t/m A20 staat alleen de formule).
De formule: LaatsteRy = Range("A1000").End(xlUp).Row geeft -in dit voorbeeld- de waarde 20.
 
Laatst bewerkt:
Post aangepast, geheel andere formule.
Code:
Sub test1()
    Range("C1") = Range("A1:A1000").Find(What:="", LookIn:=xlValues).Row
End Sub

of

Code:
Sub test1()
    laatsteregel = Range("A" & Rows.Count).End(xlUp).Row
    Range("C1") = Range("A1:A" & laatsteregel).Find(What:="", LookIn:=xlValues).Row
End Sub

In ieder geval iets om over na te denken.


Groet,
Ferenc
 
Laatst bewerkt:
Ik stel dit voor:

Code:
Sub test1()
    With Range("A9:A1000").SpecialCells(xlCellTypeFormulas)
        Range("C1") = .Find(What:="*", After:=.Cells(1), SearchDirection:=xlPrevious).Row
    End With
End Sub

Wigi
 
Demeter en Wigi,

Bedankt voor jullie tijd. Helaas geeft de oplossing van Demeter niet het gewenste resultaat; de Wigi-oplossing werkt uitstekend.
 
Wigi,


De gegeven oplossing werkt alleen als er een formule aanwezig is. Een zoekopdracht in een kolom zonder formule geeft een foutmelding met de melding dat er geen cellen zijn gevonden. Kan je nog wat ondersteuning bieden met uitbreiding van de code voor het geval er geen formule aanwezig is:
Sub test1()
With Range("A9:A1000").SpecialCells(xlCellTypeFormulas)
Range("C1") = .Find(What:="*", After:=.Cells(1), SearchDirection:=xlPrevious).Row
End With
End Sub
 
Gebruik eens eerst code tags aub: selecteer je code en druk op het hekje in de balk. Dat maakt de code leesbaar voor iedereen.

Daarna kijk ik naar je verdere vraag.
 
Laatst bewerkt:
Zie nu dat ik ergens over heen heb gelezen.
Deze zou dan de juiste zijn:
Code:
Sub test1()
    Range("C1") = Range("A1:A1000").Find(What:="", LookIn:=xlValues).Row -1
End Sub

@Wigi,
Als ik jouw code neem en ik heb in Kolom A een gevulde cel zonder achterliggende formule loopt de macro vast.
Heb ik twee cellen gevuld met data zonder hulp van een formule loopt deze daarentegen weer wel goed ????
Edit: fout geslopen bij het over nemen van je code.
Werkt ok.


Tevens ben ik het helemaal met Wigi eens dat er moet worden gewerkt met de code tags.

Groet,
Ferenc
 
Laatst bewerkt:
Combinatie Wigi zijn code en die van mij:
Code:
Sub test1()
    Range("C1") = Range("A1:A1000").Find(What:="*", SearchDirection:=xlPrevious).Row
End Sub

Blijft staan dat je de volgende keer met de Code tags moet gaan werken.
Is een stuk overzichtelijker waardoor er sneller een antwoord kan komen :).


Groet,
Ferenc
 
Ferenc

jouw eerste voorstel werkt indien de laatste cel, die gegeven moet worden, een formule bevat. Anders lukt het niet.

Hetzelfde geldt voor de post hier net boven.
 
Laatst bewerkt:
Wigi,
Wat post 8 betreft had ik wel wat beter op kunnen letten.

Maar met code uit post 7 lukt het volgens mij in alle gevallen.
En het maakt niet uit of we van boven of van onder af aan komen.


Groet,
Ferenc

edit:
deze kijkt in de waarde van de cel en niet naar de formules in de cel:
Code:
Sub test1()
    Range("C1") = Range("A1:A1000").Find(What:="*", SearchDirection:=xlPrevious, LookIn:=xlValues).Row
End Sub

Weet niet wat sneller zou werken: van bovenaf komen of van onderaf???
 
Laatst bewerkt:
Toch niet volgens mij.

Met deze code:

Code:
Sub test1()
    Range("C1") = Range("A1:A1000").Find(What:="", LookIn:=xlValues).Row - 1
End Sub

En dan een 1 in A1 en in A2 zet je

=A1+1

dan krijg je als resultaat 2.

Mijn eerder voorstel was ook fout, maar vooralsnog wacht ik op de vraagsteller om het aan te passen tot de juiste formule.

Wigi
 
Laatst bewerkt:
Heren,

Beide nogmaals bedankt: de oplossing #7 lijkt in alle gevallen te werken.

De opmerking mbt de code tag neem ik ter harte.
 
Zolang er geen lege regels tussen de data zitten moet de code in post 10 je antwoord geven.


Groet,
Ferenc
 
Wigi en Demeter,


Post #7 en #11 (identiek) geven mij in alle gevallen een prima resultaat.
De suggestie van Wigi dat post #11 (met =A1 + 1) fout zou zijn is niet correct: zodra een formule wordt gesubstitueerd wil ik hem laten meetellen.

Post #10 zal ik vanavond bekijken/testen.
 
Laatst bewerkt:
Hoe definieer je dan: "een formule die gesubstitueerd wordt"?

Volgens mij heb je ofwel een waarde (constante), ofwel een formule (variabel). En niets daarbuiten. Maar licht mij in als dat niet zo is.
 
Wigi,

In jouw voorbeeld (Zip-file post 10) staat in cel A2 de formule: =A1 * 5 ; zodra de formule tot een waarde leidt wil ik deze geselecteerd hebben.

Stel dat in jouw voorbeeld in cel A3 de formule zou staan: =als(D3="";"";12345) en cel D3 is leeg dan wil ik cel A3 (is daarmee ook leeg - behoudens de formule) niet meenemen in de telling van de laatste rij.
Staat in cel A4 de formule =als(A3="";"";A3+1) dan blijft het terecht dat alleen de cellen A1 en A2 meetellen voor de bepaling van de laatste rij.

Mvgr,
Jan.
 
Dat is veel duidelijker. Nu zie ik het. Ik ga mss straks zelf nog wat proberen.
 
Ik ga voor

Code:
Sub test()
    Range("C1") = Range("A1:A1000").Find(What:="", LookIn:=xlValues).Row - 1
End Sub

dat al eerder voorgesteld was. Dit is het volgens mij.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan