Avatar billede ae03 Novice
18. oktober 2010 - 11:41 Der er 8 kommentarer og
1 løsning

Kopiering af data i kolonne

Jeg har et dataudtræk i Excel, hvor der desværre kun er angivet cpr-nr en gang for hver person, selv om der er flere registreringer i databasen.
Jeg har brug for at kunne koble data i fx Access. Derfor vil jeg gerne have kopieret personnummeret, så det står ud for alle poster. Da det er ret omfattende at gøre manuelt, håber jeg, at nogen kan hjælpe med en makro, der kan klare opgaven.
ID og Cpr-nr står ved første post for en person, og de øvrige poster følger i de næste rækker (se ex herunder). Der er forskelliget antal poster for hver person.
Jeg forestiller mig en makro, der starter i række 2 og gennemløber rækkerne en efter en op til 1500 rækker. Den tjekker, om en celle i kolonne A (ID numerisk) eller C (CPR m 11 tegn) er tom. Hvis den ikke er tom, kopierer den indholdet i kolonne A og D, og fortsætter til næste række. Hvis den er tom, indsætter den indholdet i udklipsholderen og fortsætter til næste række.

kolonne A          kolonne C          følgende kolonner
ID                CPR                overskrifter
1                  010101-1234        agdkj
                                      adiljkhi
2                  020202-1234        oiuhfg
3                  030303-1234        sdiluyiugh
                                      liujhgrui
                                      uilguiy
4                  040404-1234        yutuytuyt
osv

Håber, at I kan følge mig, og at der er en, der kan hjælpe. Jeg har desværre meget lidt erfaring med makroer, og den ligger langt tilbage i tiden.
Avatar billede supertekst Ekspert
18. oktober 2010 - 11:57 #1
Kan godt hjælpe, hvis du sender en lille model af problematikken, som jeg kan teste på.
@-adresse under profil.
Avatar billede ae03 Novice
18. oktober 2010 - 13:15 #2
Tak. Jeg har sendt et eksempel-datasæt.
Avatar billede supertekst Ekspert
18. oktober 2010 - 13:47 #3
Dim antalRækker As Long, ræk As Long
Public Sub kopierCprnrMv()
    Application.ScreenUpdating = False
   
    antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
   
   
    For ræk = 2 To antalRækker
        If Range("A" & ræk) <> "" Or Range("C" & ræk) <> "" Then
            Application.CutCopyMode = False
            Range("A" & ræk & ":D" & ræk).Copy
        Else
            Range("A" & ræk).Select
            ActiveSheet.Paste
        End If
   
    Next ræk
   
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox ("Kopiering udført")
End Sub
Avatar billede ae03 Novice
18. oktober 2010 - 14:29 #4
Virker fint, men det er godt nok en langsommelig omgang.

Tak for hjælpen.
Avatar billede supertekst Ekspert
18. oktober 2010 - 14:35 #5
Selv tak.

Ok - hvor tit skal det anvendes?
Hvor lang tid tog det?
Avatar billede ae03 Novice
18. oktober 2010 - 14:44 #6
Det skal ikke anvendes ret ofte (om overhovedet mere), så det er ikke et problem, at det går langsomt. Det kom bare bag på mig, at det tog så lang tid, selv om jeg er klar over, at det ikke går stærkt, når en makro på den måde skal tilgå den ene celle efter den anden.

Jeg vil skyde på, at det tog 10 min at løbe igennem de 1132 rækker, selv om jeg valgte at lade pc'en passe sig selv, da den alligevel var så belastet, at den ikke var rar at lave andre ting på.
Avatar billede supertekst Ekspert
18. oktober 2010 - 14:50 #7
Har prøvet at producere ca. 1550 rækker ved at kopiere testdata.

Det tog 5 sek.
Avatar billede ae03 Novice
18. oktober 2010 - 15:04 #8
Så er det nok noget andet, der spiller ind, fx vores ikke altid lige velfungerende netværk. I hvert fald er 5 sek. kortere tid, end det tog for mig at køre det på testdata.
Avatar billede supertekst Ekspert
18. oktober 2010 - 15:12 #9
Ja - sådan er der så meget :-)
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