Avatar billede kim1a Ekspert
08. december 2015 - 11:34 Der er 3 kommentarer og
1 løsning

VBA kopiere i tom kolonne ned til hvor foregående kolonne slutter

Kære alle
Jeg kopierer noget data over i nyt faneblad og skal derefter udfylde en dato i samtlige rækker i dette nye udtræk.

Jeg kan naturligvis skabe mig en ny variabel der tæller antal rækker, men jeg kan ikke forstå dette ikke kan løses nemmere.

Jeg sætter datoen ind i AC2 og skal derefter i AD2 udregne forskellen mellem AB2 og AC2:

Range("AC2").Select
ActiveCell.FormulaR1C1 = LagerFilterdato
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("AD2").Select
ActiveCell.FormulaR1C1 = "=-RC[-2]+RC[-1]"
Selection.NumberFormat = "General"
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))

Udfordringen er min selection.end(xldown) som kopierer data til sidste række i fanebladet (= ca nummer 1 mio). Den skal typisk kun kopiere til række 70 ca.
Hvis jeg i stedet bruger noget i retning af:
Selection.AutoFill Destination så skifter datoen med en dag pr række.
Kan jeg evt skrive datoen på en bestemt måde (bemærk den kommer fra en variabel) så Excel ikke tæller op hvis jeg bruger Autofill - og hvordan styrer jeg variabelt hvor langt ned den skal udfylde?
Avatar billede kim1a Ekspert
08. december 2015 - 11:37 #1
Ah i ovenstående havde jeg vist begge løsninger i et kan jeg se.

Metode 1:
Range("AC2").Select
ActiveCell.FormulaR1C1 = LagerFilterdato
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteValues

Som går hele vejen til bund i arket.

Metode 2:
Range("AC2").Select
ActiveCell.FormulaR1C1 = LagerFilterdato
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))

Som går til korrekt række, men tæller dato op.
Avatar billede jens48 Ekspert
09. december 2015 - 00:39 #2
Prøv med:

lastrow = ActiveSheet.UsedRange.Rows.Count
Range("AC2").Copy Destination:=Range("AC2:AC" & lastrow)
Avatar billede kim1a Ekspert
09. december 2015 - 11:54 #3
Yes - det blev løsningen - altså:

Dim SidsteRækkeLagerVærdi As Integer
SidsteRækkeLagerVærdi = ActiveSheet.UsedRange.Rows.Count

Og så skabtes kolonnerne af:
Range("AC2").Select
ActiveCell.FormulaR1C1 = LagerFilterdato
Selection.Copy
Range(Selection, Selection.Offset(SidsteRækkeLagerVærdi - 2, 0)).Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("AD2").Select
ActiveCell.FormulaR1C1 = "=-RC[-2]+RC[-1]"
Selection.NumberFormat = "General"
Selection.AutoFill Destination:=Range(Selection, Selection.Offset(SidsteRækkeLagerVærdi - 2, 0))

Smid et svar så du kan få point.
Avatar billede jens48 Ekspert
09. december 2015 - 12:39 #4
Godt du kunne bruge det
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