Avatar billede sjokoman Juniormester
22. juli 2015 - 11:33 Der er 5 kommentarer og
1 løsning

Indsætte tomme linjer ved manglende datoer

I et ark, sætter jeg datoer med noget andet ( i andre kolonner) ind i kolonne A.
Der mangler som regel nogle datorer:
1/6
2/6
5/6
6/6
her er der 3/6 og 4/6, der mangler. Så jeg vil gerne sætte tomme linjer ind mellem 2/6 og 5/6, hvis muligt.
Der skal udfyldes med tomme linjer indtil månedsslut...
Helst ikke i VBA, men gerne makro, det kan jeg som regel overskue :-).

Der er ca 2000 linjer med datoer, som alle er samme måned. Det er ca 100 afsnit med datoer, her juni måned.


Kan I hjælpe mig med dette?
mvh Johnny
22. juli 2015 - 11:54 #1
Helst ikke i VBA, men gerne makro, det kan jeg som regel overskue :-).

Hvad er din definition på forskellen?
Makroer er VBA.
Avatar billede sjokoman Juniormester
22. juli 2015 - 13:17 #2
Måske er jeg ikke så kvik. Jeg mener bare, at jeg har indspillet makroer og husker det som nogenlunde overskueligt...
VBA og sætte det ind, plejer at volde mig problemer.
mvh Johnny
Avatar billede supertekst Ekspert
22. juli 2015 - 13:48 #3
Hej Johnny

Du er velkommen til at sende filen (@-adresse under min profil)/uploade den - så skal jeg forsøge med VBA..
Avatar billede supertekst Ekspert
24. juli 2015 - 10:41 #4
Public Sub indsætTommeRækker()
Dim sidsteRække As Long, ræk As Long, antalTomme As Integer, slutFlag As Boolean
Dim ptMåned As Integer, ptÅr As Integer, ptFørste As Date, ptAntalDage As Integer
Dim ptDato As Date, nextDato As Date, startOk As Boolean, slutOk As Boolean
Rem Klargøring
    sidsteRække = ActiveCell.SpecialCells(xlLastCell).Row
   
    ptMåned = Month(Range("A1"))
    ptÅr = Year(Range("A1"))
    ptFørste = "01-" & CStr(ptMåned) & "-" & CStr(ptÅr)
    ptAntalDage = hentAntalDage(ptFørste)
    startOk = False
    slutOk = False
    slutFlag = False
   
    Application.ScreenUpdating = False
   
    For ræk = 1 To 9999
        antalTomme = 0
        ptFørste = "01-" & CStr(ptMåned) & "-" & CStr(ptÅr)
       
        If Range("A" & ræk) <> "" Then
            Range("A" & ræk).Select
            ptDato = Selection
           
Rem test månedens start (fra den 1. til ptDato)
            While ptDato > ptFørste And startOk = False
                Rows(ræk & ":" & ræk).Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                ptFørste = DateAdd("d", 1, ptFørste)
                antalTomme = antalTomme + 1
            Wend
           
            startOk = True
           
            If antalTomme > 0 Then
                Range("A" & ræk + antalTomme).Select
            End If
           
            nextDato = Selection.Offset(1, 0)
           
            While DateAdd("d", 1, ptDato) < nextDato
                If DateDiff("d", ptDato, nextDato) > 1 Then
                    antalTomme = antalTomme + 1
                    Rows(ræk + 1 & ":" & ræk + 1).Insert
                    ptDato = DateAdd("d", 1, ptDato)
                Else
                    antalTomme = antalTomme - 1
                End If
            Wend
            ræk = ræk + antalTomme
        Else
            antalTomme = 0
            startOk = False
           
Rem test månedens afslut - fra ptDato til sidste dag i mpneden
            While ptDato < CStr(ptAntalDage) & "-" & CStr(ptMåned) & "-" & CStr(ptÅr)
                Rows(ræk & ":" & ræk).Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                ptDato = DateAdd("d", 1, ptDato)
                antalTomme = antalTomme + 1
            Wend
            ræk = ræk + antalTomme
        End If
    Next ræk
End Sub
Function hentAntalDage(dato)
    hentAntalDage = Day(DateSerial(Year(dato), Month(dato) + 1, 1) - 1)
End Function
Avatar billede sjokoman Juniormester
24. juli 2015 - 13:07 #5
Det virker fantastisk og hurtigt.
Tak

Johnny
Avatar billede supertekst Ekspert
24. juli 2015 - 14:02 #6
Selv 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