Avatar billede Henrik Juniormester
23. oktober 2016 - 18:21 Der er 2 kommentarer og
1 løsning

VBA - Lykke til kopiering af data fra forskellige ark til et ark

Er gået i stå - er der mon nogen som kan hjælpe?

Min workbook består af en række ark:  X, Y, Z, Forside, KPI, Tidsreg, og mange flere. Ark X, Y, og Z kan hedde noget forskelligt fra gang til gang.

Jeg vil gerne kopiere celle "R23" fra ark X, Y og Z (husk de ændrer navn - men står altid først og der kan enten værre flere eller færre ark foran arket "Forside" fra gang til gang.

Så jeg har brug for en lykke som kun læser alle de ark som står til venstre for arket "Forside" og returnerer dem til arket "Tidsreg".

Indtil videre ser min kode således ud:

Sub SummurizeSheets()
    Dim ws As Worksheet
    Application.ScreenUpdating = False
    Sheets("Tidsreg").Activate
    For Each ws In Worksheets
        If ws.Name <> "Tidsreg" Then
          ws.Range("R23").Copy
            Worksheets("Tidsreg").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
        End If
    Next ws
End Sub

På forhånd 1000 tak
Henrik
Avatar billede excelent Ekspert
23. oktober 2016 - 19:42 #1
Sub tst()
Sheets("Tidsreg").Select
For t = 1 To Sheets("Forside").Index - 1
Cells(Cells(65536, 1).End(xlUp).Row + 1, 1) = Sheets(t).Range("R23").Value
Next
End Sub
Avatar billede Henrik Juniormester
23. oktober 2016 - 21:46 #2
Super 1000 tak - det virker.

Har dog fortsat et lille problem med at få data til at stå rigtigt.

I arket "Tidsreg" vil jeg gerne have alle data fra det første ark som læses til at stå i kolonne C, data fra det næste ark som læses skal stå i kolonne H, næste ark i kolonne M osv. det vil sige at det skal forskydes med 5 kolonner ved ny aflæsning af ark.

Mon der er nogen som har forstand på det?
1000 tak igen Henrik

Sub tst()
Sheets("Tidsreg").Select
For t = 1 To Sheets("Forside").Index - 1
Cells(Cells(65536, 1).End(xlUp).Row + 3, 1) = Sheets(t).Range("R23").Value
Cells(Cells(65536, 1).End(xlUp).Row + 3, 1) = Sheets(t).Range("R34").Value
Cells(Cells(65536, 1).End(xlUp).Row + 3, 1) = Sheets(t).Range("R42").Value
Next
End Sub
Avatar billede excelent Ekspert
23. oktober 2016 - 22:15 #3
Sub tst()
Sheets("Tidsreg").Select
For t = 1 To Sheets("Forside").Index - 1
kol = 3 + ((t - 1) * 5)
Cells(Cells(65536, kol).End(xlUp).Row + 1, kol) = Sheets(t).Range("R23").Value
Next
End Sub
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