Avatar billede tifojuve Juniormester
06. september 2016 - 08:13 Der er 11 kommentarer og
1 løsning

Henvisning til "sidste celle med indhold"

Jeg sidder og arbejder med data fra nogle Excel-ark med 40000+ rækker. Da der skal sorteres en del i arkene, oprettes Pivot-tabeller, indsættes formler og plottes grafer, vil jeg gerne lave en makro.

Min første udfordring er dog at ikke 2 af disse ark har det samme antal rækker, men jeg vil gerne undgå at skulle taste noget manuelt efter makroen - eller mellem 2 makroer.

Mit spørgsmål går derfor på, om det er muligt i en formel at henvise til sidste celle med indhold i en given kolonne/række - istedet for at skrive fx D2:D46117 i første ark, D2:D41556 i næste osv.?
Avatar billede jens48 Ekspert
06. september 2016 - 09:40 #1
Denne formel vil give dig sidste fyldte celle i kolonne A.

=INDEKS(A:A;TÆLV(A:A))
Avatar billede tifojuve Juniormester
06. september 2016 - 10:00 #2
Hej Jens48.

Jeg har vist ikke formuleret mig så godt, prøver lige igen:

I de eksempler jeg angav ovenfor har jeg brug for at udskifte hhv. D46117 og D41556 med "et-eller-andet" som giver mig cellenavnet på den sidste fyldte celle i en given kolonne.

Kan man det?
Avatar billede jens48 Ekspert
06. september 2016 - 10:25 #3
Det var mig der ikke læste det ordentligt.

= Cells(WorksheetFunction.CountA(Range("D:D")), 4).Address
Avatar billede tifojuve Juniormester
06. september 2016 - 11:03 #4
Tak for det.

Den kan ikke lide kommaet og når jeg sletter det kan den ikke lide noget af det. Skal jeg sætte det ind på en særlig måde/et særligt sted?
Avatar billede jens48 Ekspert
06. september 2016 - 12:35 #5
Det er en instruktion til at sætte ind i en makro
Avatar billede xl-Enthusiast Ekspert
06. september 2016 - 12:35 #6
Du skrev:

...... om det er muligt i en formel at henvise til sidste celle med indhold i en given kolonne/række - istedet for at skrive fx D2:D46117 i første ark, D2:D41556 i næste osv.?

Du kan finde rækkenummeret på sidst udfyldte celle i kolonne D med følgende matrixformel:

=SAMMENLIGN(2;1/(D1:D50000<>""))

(Hvis D50000 ikke er nok så sæt en højere celleadresse, men ikke højere end nødvendigt).

Hvis du for eksempel skal summere fra D2 til den sidst udfyldte celle i kolonne D kan du bruge følgende matrixformel:

SUM(D2:INDEKS(D2:D50000;SAMMENLIGN(2;1/(D2:D50000<>""))))
Avatar billede tifojuve Juniormester
06. september 2016 - 13:55 #7
Hej xl-Enthusiast.

I begge tilfælde returneres #I/T.

Sidste udfyldte celle i kolonne D er D42428, så jeg er ude efter noget der returnerer D42428 eller evt. 42428.
Avatar billede tifojuve Juniormester
06. september 2016 - 14:26 #8
Arh, 42428 går nok ikke.
Avatar billede xl-Enthusiast Ekspert
06. september 2016 - 14:51 #9
Har du husket at holde Ctrl og Shift nede før du trykker på Enter (ved afslutning af formelindtastning)?
Avatar billede xl-Enthusiast Ekspert
06. september 2016 - 14:57 #10
Denne her matrixformel returnerer $D$42427 hvis D42427 er den sidst udfyldte celle i kolonne D. Husk at holde Ctrl og Shift nede før du trykker på Enter.

=ADRESSE(SAMMENLIGN(2;1/(D2:D50000<>""));4)
Avatar billede store-morten Ekspert
06. september 2016 - 17:14 #11
Makro:
Sub Marker_D2_til_sidste_celle()
SidsteRække = Sheets("Ark1").Range("D65536").End(xlUp).Address
Sheets("Ark1").Range("D2:" & SidsteRække).Select
End Sub
Avatar billede tifojuve Juniormester
07. september 2016 - 08:57 #12
Ok, vidste ikke jeg skulle holde Ctrl+Shift nede når jeg trykkede Enter. Nu virker det, skulle dog lige udskifte D2 med D1, så fik jeg resultatet jeg ville have.

Tak for hjælpen til alle.
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

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