• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

macro om rij in te voegen volgens datum

  • Onderwerp starter Onderwerp starter Amado
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Amado

Gebruiker
Lid geworden
23 mrt 2001
Berichten
64
Beste Excel-specialisten,

ik heb volgend probleempje:
ik krijg maandelijks data binnen van dagelijkse gegevens (zie file in bijlage)
Voor januari zouden dat 31 lijnen zijn.
Nu zijn er gevallen waar er geen 31 lijnen zijn;
vb. begin op 4/1 en daartussen tot 31/1 nog dagen waar niets gebeurt.
Nu is mijn vraag: is er een macro of formule die op de ontbrekende datums
een lege lijn kan toevoegen? (met waarde 0)

Alvast bedankt voor de info.

Mvg,

Amado
 

Bijlagen

Waarom zou je dat willen? In een goede tabel heb je bij voorkeur geen nutteloze gegevens staan. Jij hebt (bijna, want er zit een overbodige kolom in) een prima tabel, en dan wil je die gaan verraggen met onzinregels?
 
Los van bovenstaande terechte opmerking:

Probeer deze eens
Code:
Sub j_veer()
jv = Cells(1).CurrentRegion
 j = 0
  For i = 3 To UBound(jv)
    a = jv(i, 2) - jv(i - 1, 2) - 1
     If a <> 0 Then
       Cells(i + j, 1).Resize(a).EntireRow.Insert
       j = j + a
     End If
  Next
End Sub
 
Hallo,

Macro werkt, maar zou ook boven 4/1 3 lijnen moeten invoegen.
Dit is echt geen nutteloze macro, want die zal hierna tientallen tabellen updaten
zonder telkens lijnen bij te voegen.

Gr.

Amado
 
Waarom zou je dat willen? In een goede tabel heb je bij voorkeur geen nutteloze gegevens staan. Jij hebt (bijna, want er zit een overbodige kolom in) een prima tabel, en dan wil je die gaan verraggen met onzinregels?

het is niet zinloos, want in mijn macro moet ik telkens de gegevens van 1 tem 31 kopiëren
naar een andere file waar die gegevens op de juiste plaats moeten staan.
 
Rijen invoegen vanaf onderen geeft simpeler code.
 
het is niet zinloos, want in mijn macro moet ik telkens de gegevens van 1 tem 31 kopiëren
naar een andere file waar die gegevens op de juiste plaats moeten staan.
Ik zou toch eens het complete proces eens tegen het licht houden, want m.i. klopt er echt iets niet.
 
Ik probeer mijn probleem kort uit te leggen.
Ik krijg meerdere files binnen met gegevens uit een tacho .
Deze gegevens gaan naar 1 file van een extern kantoor.
In deze file vul ik 2 kolommen uit mijn file van de tacho's.
Indien de lengte van de kolommen allen dezelfde zou zijn (van 1 tot 31)
is er geen probleem en kan ik alle kolommen selecteren en kopiëren,
maar niet al mijn kolommen gaan van 1 tot 31 (zie vb in bijlage)
Dus 4/1 in mijn file zou ook op 4/1 op de externe file moeten komen.
Als de macro de ontbrekende datums met lege lijnen zou opvullen,
kan ik steeds de hele kolom selecteren en kopiëren.
 
Code:
Sub ToevoegenRij()
   With ActiveSheet
      letter = .Range("A2").Value                'letter in A-kolom
      jaar = Year(.Range("B2").Value)
      maand = Month(.Range("B2").Value)
      
      For i = 2 To 32                            '31 rijen !!!
         If Day(.Cells(i, "B").Value) <> i - 1 Or IsEmpty(.Cells(i, "B")) Then   'niet juiste dag of leeg
            .Cells(i, "B").EntireRow.Insert
            datum = DateSerial(jaar, maand, i - 1)
            .Cells(i, "A").Resize(, 3).Value = Array(letter, CLng(datum), Format(datum, "ddd"))
         End If
      Next
   
   End With
End Sub
 
Van onderen naar boven gaat beter, anders is de "For i =" de tel kwijt.
Code:
Sub hsv()
Dim sv, i As Long, a As Long
sv = Cells(1).CurrentRegion
  For i = UBound(sv) To 3 Step -1
    a = sv(i, 2) - sv(i - 1, 2) - 1
     If a > 0 Then Rows(i).Resize(a).Insert xlDown
  Next
End Sub
 
Kleine toevoeging om aan de vervolgvraag te voldoen. Het toevoegen van regels boven regel 2

Code:
Sub hsv2()
sv = Cells(1).CurrentRegion
 b = Day(sv(2, 2)) - 1
   For i = UBound(sv) To 3 Step -1
      a = sv(i, 2) - sv(i - 1, 2) - 1
      If a > 0 Then Rows(i).Resize(a).Insert
   Next
   If b > 0 Then Cells(2, 1).Resize(b).EntireRow.Insert , 1
End Sub
 
Kleine toevoeging om aan de vervolgvraag te voldoen. Het toevoegen van regels boven regel 2

Code:
Sub hsv2()
sv = Cells(1).CurrentRegion
 b = Day(sv(2, 2)) - 1
   For i = UBound(sv) To 3 Step -1
      a = sv(i, 2) - sv(i - 1, 2) - 1
      If a > 0 Then Rows(i).Resize(a).Insert
   Next
   If b > 0 Then Cells(2, 1).Resize(b).EntireRow.Insert , 1
End Sub
 
Hoi JV,

Nu werkt de code perfect.
Hartelijk dank en nog een prettige avond.

Amado
 
Code:
Sub ToevoegenRij()
   With ActiveSheet
      letter = .Range("A2").Value                'letter in A-kolom
      jaar = Year(.Range("B2").Value)
      maand = Month(.Range("B2").Value)
      
      For i = 2 To 32                            '31 rijen !!!
         If Day(.Cells(i, "B").Value) <> i - 1 Or IsEmpty(.Cells(i, "B")) Then   'niet juiste dag of leeg
            .Cells(i, "B").EntireRow.Insert
            datum = DateSerial(jaar, maand, i - 1)
            .Cells(i, "A").Resize(, 3).Value = Array(letter, CLng(datum), Format(datum, "ddd"))
         End If
      Next
   
   End With
End Sub

Hoi Cow18,

Code werkt perfect, waarvoor hartelijk bedankt.
Prettige avond nog. :thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan