Avatar billede degnens Juniormester
01. marts 2013 - 10:31 Der er 11 kommentarer og
1 løsning

Automatisk udfyldning af variabelt antal rækker med dato

Jeg vil gerne have Excel til at udfylde en kolonne med et variabelt fortløbende antal rækker med dato, således:

A1: her indtastes startdato
B1: her indtastes slutdato

C2: her indsættes automatisk startdato
C3: her indsættes automatisk startdato+1
C4: her indsættes automatisk startdato+2
Osv.

Rækkerne i kolonne C afsluttes med den dato er er slutdato.

Er der nogen, som har et bud på en kode, der kan klare det?
Avatar billede Slettet bruger
01. marts 2013 - 11:08 #1
Det kan gøres på flere måder. Èn måde at gøre det på er som følger:

Marker for eksempel C1:C100 (eller så stort et område som det er relevant) og indtast følgende matrixformel:

=RÆKKE(INDIREKTE($A$1&":"&$B$1))

(husk ved indtastning at holde Ctrl og Shift nede før du trykker på Enter og husk at formatere området som dato).

Du kan eventuelt skjule #I/T-værdier ved hjælp af betinget formatering.

Hans
Avatar billede degnens Juniormester
01. marts 2013 - 12:07 #2
Det virker næsten.  Jeg kan bare ikke finde ud af at fjerne #I/T med betinget formatering? Jeg forsøgte også med en =hvis() funktionsudvidelse, så jeg skrev, at hvis din formel var fejl, skulle resultatet være blank. Men det kunne jeg heller ikke rigtig få til at fungere. Det er vigtigt, at der i de rækker, som der ikke skal stå noget i, er en "blank"-værdi, da fejlværdien forstyrrer resten af regnearket.

Kan du guide mig lidt videre i, hvordan jeg får fjernet fejlvisningen?
Avatar billede Slettet bruger
01. marts 2013 - 12:23 #3
Marker C1:C100 (eller der hvor du har matrixformlerne)
Gå ind i Betinget formatering og vælg "Brug en formel til at bestemme, hvilke celler der skal formateres".
Indtast følgende formel: =FEJLTYPE($C1)=7
Tryk på Formater, herefter Skrifttype. Under Farve, vælg Hvid.
OK dig ud.

Hans
Avatar billede degnens Juniormester
01. marts 2013 - 12:41 #4
Det synes jeg ikke gør nogen forandring. #I/T står der stadig i sort, som om den slet ikke registrerer, at der skulle være betinget formatering. Det vil nu heller ikke være nok bare at skjule den med samme farve som baggrunden. Cellen skal være reelt tom, for ellers påvirker det andre beregninger i regnearket, der giver fejlbeskeder. Hvis formelen =RÆKKE(INDIREKTE($A$1&":"&$B$1)) ikke returnerer en værdi, fordi datoerne er sluppet op og der ikke skal være flere rækker, så skal der returneres en blank værdi, altså noget i stil med:

=hvis(RÆKKE(INDIREKTE($A$1&":"&$B$1))<>"";RÆKKE(INDIREKTE($A$1&":"&$B$1));"")

Men det virker desværre ikke.
Avatar billede degnens Juniormester
01. marts 2013 - 13:27 #5
Har også forsøgt med denne formel:

=HVIS.FEJL(RÆKKE(INDIREKTE($A$1&":"&$B$1));"")

Men den viser bare stadig #I/T i de rækker, hvor er ikke skulle stå noget.
Avatar billede Slettet bruger
01. marts 2013 - 13:49 #6
Prøv med denne matrixformel i C1 og kopier nedad i nødvendigt omfang. Ikke noget betinget formatering her.

=HVIS(RÆKKE()>$B$1-$A$1+1;"";RÆKKE(INDIREKTE($A$1&":"&$B$1)))

Når datoerne er udtømt vil cellerne fremtræde blanke,men de er ikke reelt tomme. Check selv med =ER.TOM("blank celle").

Hvis det heller ikke dur kan du erstatte "" i formlen med 0 (nul) og så formatere nulværdier til at være usynlige.

Hans
Avatar billede Slettet bruger
01. marts 2013 - 13:54 #7
Rettelse til #6:
Du skal starte med at markere C1:C100 (eller et andet område) og så indtaste matrixformlen i hele området i ét hug.

Hans
Avatar billede degnens Juniormester
01. marts 2013 - 14:03 #8
Næeh, det er heller ikke helt i plet. Når jeg bruger formlen:
=HVIS(RÆKKE()>$B$1-$A$1+1;"";RÆKKE(INDIREKTE($A$1&":"&$B$1)))

er alle resultater tilsyneladende blanke. Hvis jeg bytter om på værdi-hvis-sand og værdi-hvis-falsk således:


=HVIS(RÆKKE()>$B$1-$A$1+1;RÆKKE(INDIREKTE($A$1&":"&$B$1));"")

får jeg samme resultat som før: de korrekte datoer i de første rækker og #I/T i de resterende, som skulle være blanke.
Avatar billede degnens Juniormester
01. marts 2013 - 14:09 #9
Jeg får for øvrigt en debug-fejl, når jeg indtaster din formel, der gør alle blanke, som ser således ud:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("C33:C47")) Is Nothing Then
If Not Target.Offset(0, 6) <> "" Then
    Target.Offset(0, 6) = "Ja"
    Target.Offset(0, 1).Select
   
End If
End If
End Sub

Det er 3. linje: If Not Target.Offset(0, 6) <> "" Then, der er markteret som et problem. Har det noget med det at gøre? Jeg skal lige sige, at min version er det markerede område, hvor datoerne skal sættes ind C33:C47 og ikke C3:C100, som du har opereret med.
Avatar billede degnens Juniormester
01. marts 2013 - 14:53 #10
Nu har jeg forstået, at funktionen RÆKKE() returnerer det aktuelle rækkenummer i arket. Fejlen med samtlige blanke felter opstår nok, fordi funktionen i det rigtige regneark ikke ligger i området C1:C100, men i virkeligheden i området C32:C46. Derfor skal jeg måske bruge et andet tal end 1 at plusse med. Prøver mig lige frem...
Avatar billede degnens Juniormester
01. marts 2013 - 14:57 #11
Bingo!! Jeg skulle bare skrive +32 i stedet for +1 i dit formelforslag fra #6. Jeg får stadig debug-fejlmeddelelsen fra før, men det ser umiddelbart ud til at virke, så det skal jeg måske bare blæse på? Smider du et svar til point?
Avatar billede Slettet bruger
01. marts 2013 - 16:00 #12
OK.
Hans
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