Avatar billede lq Nybegynder
26. januar 2006 - 20:08 Der er 12 kommentarer og
1 løsning

Automatisk udvidelse af navngivent område

Er det muligt at sætte excel op til automatisk at udvide et navngivent område efterhånden, som der kommer nye rækker til?
Avatar billede kabbak Professor
26. januar 2006 - 20:17 #1
Hvis du har området i A kolonnen, Fra A1 af, kan den udvides via makro, her bliver den opdateret hvergang arket bliver aktiveret.
Det navngivne område hedder Omrode

Koden er i arkets modul

Private Sub Worksheet_Activate()
    RW = Range("A65536").End(xlUp).Row
    ActiveWorkbook.Names.Add Name:="Omrode", RefersToR1C1:="=Ark1!R1C1:R" & RW & "C1"
End Sub
Avatar billede lq Nybegynder
26. januar 2006 - 20:46 #2
Det er skægt nogle gange kan jeg regne ud hvad koden gør, men denne kan jeg slet ikke forstå, hvad er R1C1?

Jeg går ud fra, at hvis området omfatter flere kolonner så udvider jeg blot RW. Tilsvarende med arknavnet.

Kan jeg gøre det samme med flere navngivne områder i arket?

Arkets modul, hvad er det?
Avatar billede kabbak Professor
26. januar 2006 - 20:48 #3
R1C1
række1 kolonne1
Avatar billede kabbak Professor
26. januar 2006 - 20:51 #4
Arkets modul, er det der åbnes når du højreklikker på en arkfane og vælger vis programkode.

Du kan lave opdateringer på alle de områder du har i arket.

RW = Range("A65536").End(xlUp).Row

finder den sidste celle med data i  kolonne A, du laver bare en tilsvarende for de andre områder
Avatar billede brynil Nybegynder
26. januar 2006 - 20:54 #5
Måske kabbak kan forklare denne nærmere. Jeg har bare fundet den på nettet:

=FORSKYDNING(Ark1!$A$1;0;0;TÆLV(Ark1!$A:$A);1)

Jeg markerede A1, indsatte ovennævnte sam navngivet Omraade.

Så længe der ikke er tomme celler i kolonnen/området, så ændrer den det navngivne område. Måske kan den ændres så den tæller tomme celler med. Er ikke en ørn til funktioner.

Testet den med
Range("Omraade").Select
Avatar billede brynil Nybegynder
26. januar 2006 - 21:01 #6
Forøvrigt, jeg var da ikke klar over man kunne få oversat engelske formler til dansk på denne måde via en makro:

ActiveCell.Formula = "=OFFSET(Ark1!$A$1,0,0,COUNTA(Ark1!$A:$A),1)"

Den blev til:

=FORSKYDNING(Ark1!$A$1;0;0;TÆLV(Ark1!$A:$A);1)  ..i den valgte celle.

Jeg har tidligere set spørgsmål om oversættelse, så måske det er noget der kan bruges.  :)) Eller oss' er jeg bare langsom ;)
Avatar billede kabbak Professor
26. januar 2006 - 21:10 #7
> brynil
den giver værdien fra Ark1 kolonne A samme række som man sætter formlen ind i.
Avatar billede kabbak Professor
26. januar 2006 - 21:15 #8
her er en almindelig makro der laver områderne eller opdaterer dem jvis de er der i forvejen.

Public Sub OpdaterNavne()
    RW = Range("A65536").End(xlUp).Row
    ' området er nu "A1:C" og sidste række i A kolonnen med noget i
    ' man behøver kun at teste på en af kolonnerne, men det skal være den der er udfyldt nederst.
    ActiveWorkbook.Names.Add Name:="Omrode1", RefersToR1C1:="=Ark1!R1C1:R" & RW & "C3"
   
    ' her laves et andet område, hvis navnet er brugt, udvides det
    'Det er i F1 til H nederste brugte celle
    RW = Range("F65536").End(xlUp).Row
    ActiveWorkbook.Names.Add Name:="Omrode2", RefersToR1C1:="=Ark1!R1C6:R" & RW & "C8"

End Sub
Avatar billede lq Nybegynder
26. januar 2006 - 21:29 #9
Begge virker fortrinligt. Brynils har den fordel, at jeg ikke har problemer med makrobeskyttelse.

Hvis I begge svarer, kan jeg vel give eller dele pointsene mellem jer.
Avatar billede kabbak Professor
26. januar 2006 - 21:29 #10
et svar
Avatar billede brynil Nybegynder
26. januar 2006 - 21:32 #11
Nej tak :)
Avatar billede bak Forsker
26. januar 2006 - 21:39 #12
brynil, man skal bare lige forstå forskydning
=FORSKYDNING(Ark1!$A$1; 1; 0) giver cellen nedenunder
=FORSKYDNING(Ark1!$A$1; 0; 1) giver cellen tilhøjre for

de to sidste argumenter til funktionen giver udstrækningen
=FORSKYDNING(Ark1!$A$1;0;0; 3; 1)
vil give A1, A2 og A3
=FORSKYDNING(Ark1!$A$1;0;0; 1; 3)
vil give A1,B1 og C1
Da TÆLV(A:A) giver antallet af udfyldte celler i kolonne A vil
=FORSKYDNING(Ark1!$A$1;0;0;TÆLV(Ark1!$A:$A); 1)
give et område fra A1 til A-antal udfyldte celler.
fx hvis der er 10 udfyldte celler vil funktionen give dig området A1:A10

På samme måde kan du have hele udstrækningen af et dataområde således
=FORSKYDNING(Ark1!$A$1;0;0;TÆLV(Ark1!$A:$A); TÆLV(1:1))
hvor det sidte argument tæller antallet af udyldte celler i række 1
På denne måde bliver området dynamisk, men det fungerer ikke hvis der er tomme celle i kolonne A eller i række 1
Avatar billede brynil Nybegynder
27. januar 2006 - 08:25 #13
Ok bak. Og tak :)
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