Avatar billede mile Juniormester
01. december 2015 - 10:38 Der er 6 kommentarer og
1 løsning

Uddrag hver 3. og derefter hver anden

Nogen der er frisk på en lille stump kode ? Jeg har et regneark med kolonne A og B:

A          B
Navn1    Værdi1
Navn2    Værdi2
Navn3    Værdi3
Navn4    Værdi4
OSV - ca. 1500 linier

Er det muligt at lave noget kode der lægger hver 3 række over i kolonne D 0g E sletter de tommer celler der efterlades, og derefter tager hver anden række i kolonne A og B og lægger dem over i kolonne G 0g H og sletter de tomme celler der efterlades i kolonne A og B.
Avatar billede zer0c00l Juniormester
01. december 2015 - 11:06 #1
Det skal skrives i VBA.

Udvikler > Visual Basic..

Højreklik på "VBAProject" vælg Insert > Module..

Skriv følgende kode:




Sub OneCell()

For i = 1 To 1500
    If i Mod 3 = 0 Then
        Range("A" & i).Select
        Selection.Cut
        Range("C" & i).Select
        ActiveSheet.Paste
        Range("B" & i).Select
        Selection.Cut
        Range("D" & i).Select
        ActiveSheet.Paste
   
        Application.CutCopyMode = False
    End If
Next
   
End Sub




Gem som "Excel-projktmalle med aktive makrier (*.xlsm)

Kør filen fra:

Udvikler > Makroer..

Eller opret en hotkey.
Avatar billede mile Juniormester
01. december 2015 - 11:10 #2
Nå vi har fundet ud af det.
Avatar billede mile Juniormester
01. december 2015 - 11:11 #3
Tak lægger du ikke lige et svar - så du kan få nogle points ?
Avatar billede zer0c00l Juniormester
01. december 2015 - 11:11 #4
Ehm jamen ok da...
Avatar billede zer0c00l Juniormester
01. december 2015 - 11:11 #5
Hov!
Avatar billede zer0c00l Juniormester
01. december 2015 - 11:22 #6
Mange tak. Dét var generøst!
Avatar billede zer0c00l Juniormester
01. december 2015 - 12:55 #7
Jeg kan se, jeg manglede en hel del. Nu lavede jeg den lige færdigt for en god ordens skyld.

Det, der dog ultimativt sker, når du først lader hver tredje overleve og derefter hver anden af disse, er jo, at du i første omgang lige så godt kunne have ladet hver sjette overleve.

Jeg mener:

Navn1
Navn2
Navn3
Navn4
Navn5
Navn6
Navn7
Navn8
Navn9
Navn10
Navn11
Navn12
Navn13

Bliver til:

Navn3
Navn6
Navn9
Navn12

Som efterfølgende bliver til:

Navn6
Navn12

Altså det samme, som hvis du i første omgang havde valgt hver sjette.

Med mindre jeg misforstår, hvad du ønsker? :-)


Sub OneCell()

For i = 1 To 100
    If i Mod 3 = 0 Then
        Range("A" & i).Select
        Selection.Cut
        Range("C" & i / 3).Select
        ActiveSheet.Paste
        Range("B" & i).Select
        Selection.Cut
        Range("D" & i / 3).Select
        ActiveSheet.Paste
   
        Application.CutCopyMode = False
    End If
Next

Columns(1).EntireColumn.Delete
Columns(1).EntireColumn.Delete

For i = 1 To 100
    If i Mod 2 = 0 Then
        Range("A" & i).Select
        Selection.Cut
        Range("C" & i / 2).Select
        ActiveSheet.Paste
        Range("B" & i).Select
        Selection.Cut
        Range("D" & i / 2).Select
        ActiveSheet.Paste
   
        Application.CutCopyMode = False
    End If
Next

Columns(1).EntireColumn.Delete
Columns(1).EntireColumn.Delete

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