Avatar billede oyejo Nybegynder
24. september 2003 - 19:00 Der er 26 kommentarer og
3 løsninger

Hjelp! Siste rad med data i en kolonne

Her en kode som skal finne siste rad i en kolonne A.

Prblemet er at i noen andre kolonner er det data lengre nede på arket.

Har benyttet.
ActiveSheet.Range("A2000").End(xlUp).Row
Men det virker som den finner siste rad som er fylt uansett kolonne.
Avatar billede bak Forsker
24. september 2003 - 19:26 #1
nix, det skal virke.... :-)
men hvis du har formler i kolonne A hele vejen ned finder den sidste formel uanset om formlens resultat er ""
Avatar billede klid Nybegynder
24. september 2003 - 20:14 #2
Du kan lave en anden kolonne, som tæller op hvis der er noget i kolonne A,
Fx i celle b7; hvis(a7<>"";b6+1;"";)Det kopieres til hele B-kolonnen.
Så skal man bare sige maks(b1:b2000) - så har man den sidste række med mening i kolonne A

I et adetet felt kan man så lave
Avatar billede oyejo Nybegynder
25. september 2003 - 07:17 #3
-> bak det er kun rene data i kolonne A
Benytter Selection.ClearContents før nye data blir kopiert inn.
Men det noen formeler i andre kolonner som har kolonne A som referanse.
Kan det være årsaken?
-> klid ditt svar kan være en løsning, men problemet er at det kan være tomme celler i kolonne A før jeg kommer til siste rad. :-)
Avatar billede oyejo Nybegynder
25. september 2003 - 07:36 #4
Det virker som det er Selection.ClearContents som ikke tømmer cellene helt. Selv om de ser ut til å være tomme, finner xlUp noe.
Når jeg manuelt merker kollonne A og trykker del, finner xlUp riktig rad.
Kan jeg benytte en annen funsjon enn ClearContents til å tømme cellene? Jeg ønsker å beholde formatene. ( datoformatet i kolonne A)
Avatar billede bak Forsker
25. september 2003 - 08:53 #5
Det her forstår jeg ikke...
Jeg tror du bliver nødt til at vise noget mere af kode, for den linie kan ikke være den der giver dig fejl.
Clearcontents skal være nok
jeg tester sådan her, og og uanset hvad jeg gør rammer den rigtigt.

Sub test4()
MsgBox ActiveSheet.Range("A64000").End(xlUp).Row
End Sub
Avatar billede oyejo Nybegynder
25. september 2003 - 09:27 #6
i Sub CleanFil()har jeg følgende kode, jeg ser at denne fungerer.
Sheets("DecayRaadata").Select
Range("CleanDecay").Select
Selection.ClearContents

Neste Sub:
Sheets("DriftRaadata").Select
L1: intFraRadNr = ActiveSheet.Range("A2000").End(xlUp).Row
L2: ActiveSheet.Cells(intTilRadNr + 1, intKolonneNr) = intFraRadNr
L3: dblVerdi = ActiveSheet.Cells(intFraRadNr, intKolonneNr)
L4: ActiveSheet.Cells(intTilRadNr, intKolonneNr) = dblVerdi

Der er i linje 3 (L3) programmet stopper. (dblVerdi = 0 )
I L1:  er (intFraRadNr = 1000), men det er ikke data i A1000
Formlene i kolonnene som refererer til A legger ned til rad 1000
Avatar billede oyejo Nybegynder
25. september 2003 - 10:01 #7
-> bak, du har rett. Som alltid :-)
Det må være noe annet som er galt
Avatar billede jkrons Professor
25. september 2003 - 10:04 #8
Har du prøvet med Selection.Clear i stedet for Selection.ClearContents?
Avatar billede oyejo Nybegynder
25. september 2003 - 10:09 #9
-> jkrons, jeg har ikke prøvd Selection.Clear da det fjerner formatet. Men jeg har testet Selection.ClearContents i liten målestokk. Da fungerte det. Så det må være feil i min kode. :-)
Avatar billede jkrons Professor
25. september 2003 - 10:19 #10
Måske er det mig, der har misforstået dine procedurer, men i den første procedure aktiverer du arket DecayRaadata og renser området CleanDeacay for indhold.
I den anden Sub vælger du arket DriftRaadata og finder den sidst benyttede celle i a-kolonnen. det ser altså ud som om de to subs arbejder med to forskellige ark.
Avatar billede oyejo Nybegynder
25. september 2003 - 10:32 #11
->jkrons. I eksemplet har jeg gjort feil men i koden er det samme ark
Avatar billede jkrons Professor
25. september 2003 - 10:33 #12
Ok! My mistake.
Avatar billede oyejo Nybegynder
25. september 2003 - 10:47 #13
No. My mistake ;-)
Avatar billede jkrons Professor
25. september 2003 - 11:22 #14
Hvordan definerer du intTilRadNr og inhtKolonneNr - altså hvor får de deres værdi fra?
Avatar billede jkrons Professor
25. september 2003 - 11:36 #15
Problemet er, at det er lidt svært at gennemskue, hvad det er, du forventer der skal ske. Og det er svært selv at afprøve koden, når der mangler noget.

Som jeg opfatter funktionaliteten aflæser den, den sidste "brugte" celle i kolonnen og skriver denne værdi + 1 i en anden celle, men det kan være helt forkert opfattet.
Avatar billede stefanfuglsang Juniormester
25. september 2003 - 14:00 #16
Jeg bruger i et lignende tilfælde Activesheet.UsedRange, kan det ikke bruges her?

dim isect as range
dim lastcell as range
Set isect = Application.Intersect(Activesheet.UsedRange , Range("A1:65000"))
If isect Is Nothing Then
    MsgBox "Error"
Else
    lastcell = isect.End(xlUp)
End If
Ved ikke om det giver samme problem som det nævnte (er lidt svært at gennemskue)
Avatar billede stefanfuglsang Juniormester
25. september 2003 - 14:01 #17
Range("A1:A65000") selvfølgelig
Avatar billede stefanfuglsang Juniormester
25. september 2003 - 14:22 #18
Mit eksempel virker ikke. Kan nok komme til det, men glem det...

ActiveSheet.Range("A2000").End(xlUp) giver rigtigt nok sidste celle med data i kolonne A.
Avatar billede stefanfuglsang Juniormester
25. september 2003 - 14:34 #19
Hvad er ntKolonneNr? - hvis den er 1 (svarende til "A") er det måske her fejlen ligger - mener du ikke L2: ActiveSheet.Cells(intTilRadNr, intKolonneNr + 1) = intFraRadNr ??
Avatar billede oyejo Nybegynder
29. september 2003 - 15:54 #20
Beklager at jeg ikke har kunnet svare på noen dager.
Benyttet selection.clearcontens på "områdeA"
Så ble KUN VERDIENE fra "områdeB" kopiert og limt inn i "områdeA"
Cellene i "områdeB" hadde formelen:
Hvis(Alternativ1= sann , X ; " "),
Det var disse " " verdiene ...End(xlUp) registrerte.
Forstår dere min "klumsete" forklaring :-?
Avatar billede jkrons Professor
29. september 2003 - 15:58 #21
Mener du at du kopierer Omårde B til Område A før du laver din xlUp? Og laver du den i Omårde A?
Avatar billede oyejo Nybegynder
29. september 2003 - 16:02 #22
-> jkrons og det hadde jeg desverre glemt å fortelle dere
My Mistake.
Så områdeB hadde formler, jeg limte dem inn i områdeA som verdier.
Det må være " " verdiene i områdeB som skapte problemene for meg
Avatar billede oyejo Nybegynder
29. september 2003 - 16:06 #23
OmrådetB har tall helt ned til en rad,
så kommer " " verdiene i radene nedenfor
Da jeg kun kopierte de radene som inneholdt tall, virket det hele
Avatar billede oyejo Nybegynder
29. september 2003 - 16:09 #24
hvis det ble uklart, benyttet min xlUp i områdeA etter kopieringen
Avatar billede oyejo Nybegynder
29. september 2003 - 16:42 #25
Dere får  noen point's alle 4,skal øke pointene litt.
bak, jkrons og klid får "sminde noen svar" (min dansk er ikke god) :-)
PS!
når man har definert et objA As Range. har objektet kun en områdeverdi, eller ligger også alle cellens verdier lagret i objektet. ( må lese mere om dette med objekter )
Avatar billede bak Forsker
29. september 2003 - 17:38 #26
godt du fandt en løsning, oyejo.
Jeg forstår ikke lige dit PS, så  det må du uddybe...
Avatar billede oyejo Nybegynder
29. september 2003 - 18:02 #27
->bak
Hvilke verdier kan en rangeobjekt som omfatter mange celler ha
Hvis et rangeobj. representerer celle A1 og B1. Kan objektet innehodlde tallverdiene til begge disse cellene?
Det er mulig jeg spør helt feil fordi jeg ikke forstår objekter :-)
Avatar billede bak Forsker
29. september 2003 - 19:55 #28
Ja, det kan sagtens indeholde begge værdier, men betragt rangeobj som en reference til et område i stedet, for hvis en værdi ændres i området indeholder det gamle rangeobj ikke de gamle værdier, men de nye.
Hvis du har et rangeobj = A1:C20 kan du referere til de enkelte celler således
test = rangeobj(19,3) hvilket er lig med c19


Sub teste()
Dim rangeobj As Range
Dim test As Long
Set rangeobj = Range("A1:C20")
test = rangeobj(19, 3)
MsgBox test
End Sub

Håber at det besvarer dit spørgsmål ellers må du prøve igen :-)
Avatar billede jkrons Professor
29. september 2003 - 22:34 #29
Jeg håber st du får det til at virke :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester