gebied met 2 variabelen copieren

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
554
Geacht forum,
Ik weet niet hoe ik een Range met 2 variabelen kan kopieren.
Ik heb voor de duidelijkheid een voorbeeld bestandje bijgevoegd
Vriendelijke groet Jaap
 

Bijlagen

  • Test kopieren range met 2 variabelen.xlsm
    21,5 KB · Weergaven: 31
VenA
Bedankt voor je reactie.
Ik weet echter niet te realiseren wat je bedoelt.
Kan je dit verder voor mij uitwerken?

Zelf dacht ik aan zoiets als End(xlup) en dan naar de onderste "DI"
om die positie vast te leggen.
Weet echter niet hoe dat te doen
Jaap
 
Waarom kopiëren? Je kan toch filteren of een draaitabel gebruiken.
 

Bijlagen

  • Test kopieren range met 2 variabelen (1).xlsm
    17,6 KB · Weergaven: 28
en als je het perse met een macro wil dan kan het bv zo. (Werkt alleen in het bestandje in #4)

Code:
Sub VenA()
  ar = Split("DI DO")
  With Sheets("Blad1")
    .Cells(1, 26) = "Dag"
    For j = 0 To 1
      .Cells(2, 26) = ar(j)
      .ListObjects(1).Range.AdvancedFilter xlFilterCopy, .Range("Z1:Z2"), Sheets(j + 2).Cells(1)
    Next j
    .Range("Z1:Z2").Clear
  End With
End Sub
 
Ja , dat was mijn eerst gedachte om het via een macro te scheiden en dan verplaatsen naar Blad 2 en Blad 3
Ik ga uw 2e voorstel uitproberen.
Dank u wel!!
Vriendelijke groet , Jaap
 
VenA
Heb het uitgeprobeerd.
Wat een prachtige oplossing
Dit is precies wat ik bedoelde.
Ik snap er alleen niets van hoe het werkt.
Zou u , ter lering , enige uitleg kunnen geven zodat ik begrijp hoe de code werkt??
Vriendelijke groet , Jaap
 
Als je er niets van snapt kan je er het beste ver van weg blijven.;)
 
En anders... probeer je het met een stukje (minder professionele) code dat je dan best mogelijk wel begrijpt:
Code:
Sub enigmasmurf()

With Sheets("Blad1")
    aantal_di = WorksheetFunction.CountIf(.Columns(4), "DI")
    .Range("A1:D" & aantal_di + 1).Copy Sheets("Blad2").Cells(1, 1)
    aantal_do = WorksheetFunction.CountIf(.Columns(4), "DO")
    .Range("A1:D1,A" & aantal_di + 2 & ":D" & aantal_di + aantal_do + 2).Copy Sheets("Blad3").Cells(1, 1)
End With

End Sub
 
De uitleg Jaap.
Code:
Sub VenA()
  ar = Split("DI DO")  'split de tekst op de spatie die tussen "DI en DO" staat
  With Sheets("Blad1")
    .Cells(1, 26) = "Dag"  'zet "Dag" in cel Z1
    For j = 0 To 1  'laat de lus twee keer lopen; de variabele j krijgt eerst de waarde 0 en daarna 1.
      .Cells(2, 26) = ar(j)  'zet in cel Z2 ar(j); eerste keer is ar(o) = "DI"; tweede keer is ar(1) = "DO"
      .ListObjects(1).Range.AdvancedFilter xlFilterCopy, .Range("Z1:Z2"), Sheets(j + 2).Cells(1)  'haal de gegevens op dmv de cellen Z1:Z2 met de copymethode van het geavanceerde filter respectievelijk naar de bladen Sheets(0+2) en sheets(1+2) cel A1.
    Next j  'volgende j
    .Range("Z1:Z2").Clear  'wis alles wat in Z1:Z2 staat.
  End With
End Sub
 
Enigmasmurf ,
Hartelijk bedankt voor je code
Ik snap hem helemaal
Je telt de dagen en gebruik dat getal dan om de positie te bepalen.

HSV , ook bedankt voor uw uitleg.
Ik ben er mee aan de slag gegaan met het scheiden en verplaatsen van 4 dagen en
het is me gelukt.
Iedereen nogmaals bedankt voor de geboden hulp
Veel van geleerd.
Vriendelijke groet Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan