Avatar billede larsq Nybegynder
24. marts 2005 - 20:10 Der er 7 kommentarer og
1 løsning

Udvælge række på basis af kriterium og indsætte i andet ark

Jeg har et kæmpe regneark der indeholder oplysninger om modtagne breve. Regnearket er organiseret med modtagedato, afsender og svardato. Jeg søger en makro, der kan hjælpe til at rydde op i arket. Dvs. at hvis svardatoen er udfyldt skal rækken klippes over i et andet regneark, hvis navn svarer til året for svardato.

Arket ser sådan ud;

Brevdato  Afsender    Svardato
12-05-03  ccc        06-06-03
09-07-04  bbb        23-09-04
21-12-04  nnn        26-12-04
05-01-05  xxx       

Makroen skal vælge rækken med 03-datoen og indsætte den i et ark, der hedder "2003" og 04-datoerne og indsætte dem i et ark, der hedder "2004"
Avatar billede sjap Praktikant
24. marts 2005 - 21:44 #1
Det letteste er nok at lave en sortering efter svardato, og så efterfølgende kopiere cellerne til de respektive ark.

Det kan selvfølgelig også laves med en makro, men med ovenstående kan du være færdig på mindre end 30 sekunder.

Hvis det er en løbende procedure du skal gennemføre vil en makro selvfølgelig være en hjælp, ellers synes jeg det vil være at skyde over målet.
Avatar billede larsq Nybegynder
24. marts 2005 - 22:05 #2
Jeg skal udføre proceduren løbende. Kopiering er ikke godt nok for rækkerne skal ud af det oprindelige ark. Men..måske kunne man lave en makro, der aktiverer sortering efter svardato. Så kunne jeg klippe de udfyldte rækker ud, og så have en anden makro, der ændrer sorteringen således arket atter er sorteret efter brevdato.

Jeg er nu tiltalt af automatiseringen - havde nået til ActiveCell.entirerow.select på nettet, men er gået i stå med løkker og flytning.

Jeg prøver lige sorteringen.
Avatar billede kabbak Professor
24. marts 2005 - 22:12 #3
Public Sub Flyt()
Dim I As Long, Navn As String
Rw = Range("C65536").End(xlUp).Row
For I = Rw To 2 Step -1
If Cells(I, 3) <> "" Then
Navn = Year(Cells(I, 3).Value)
  Range("A" & I & ":C" & I).Copy Sheets(Navn).Range("A65536").End(xlUp).Offset(1, 0)
Rows(I).Delete
End If
Next
End Sub
Avatar billede kabbak Professor
24. marts 2005 - 22:18 #4
Nå det var hele rækken, den er her

Arkene med årstal, som navn skal være lavet i forvejen
kolonne A skal væte udfyldt altid

Public Sub Flyt()
Dim I As Long, Navn As String
Rw = Range("C65536").End(xlUp).Row ' C rettes til den kolonne du har Svardato i
For I = Rw To 2 Step -1
If Cells(I, 3) <> "" Then
Navn = Year(Cells(I, 3).Value) ' 3 = kolonne C , den med  svardato i
Rows(I).Copy Sheets(Navn).Range("A65536").End(xlUp).Offset(1, 0)
Rows(I).Delete
End If
Next
End Sub
Avatar billede larsq Nybegynder
24. marts 2005 - 22:40 #5
Arj hvor godt. Det virker bare! Det ser ud til at hver gang man kører den, så skriver den videre i destinationsarket fremfor at overskrive.

Jeg forstår din bemærkning som at kolonne A ikke må indeholde tomme felter, er det korrekt?

Kan den suppleres med 2 betingelser om at den skal undlade at klippe, hvis kolonne C er tekst eller 2005?
Avatar billede kabbak Professor
24. marts 2005 - 22:48 #6
Public Sub Flyt()
Dim I As Long, Navn As String
Rw = Range("C65536").End(xlUp).Row
For I = Rw To 2 Step -1
If IsDate(Cells(I, 3)) Then ' tjekker om det er en dato
If Year(Cells(I, 3).Value) < 2005 Then ' kun år mindre end 2005 flyttes
Navn = Year(Cells(I, 3).Value) ' 3 = kolonne C , den med  svardato i
Rows(I).Copy Sheets(Navn).Range("A65536").End(xlUp).Offset(1, 0)
Rows(I).Delete
End If
End If
Next
End Sub
Avatar billede kabbak Professor
24. marts 2005 - 22:50 #7
Det er korrekt med kolonne A, for det er den der styrer på destinationsarket, hvor den må sætte data ind.
Avatar billede kabbak Professor
24. marts 2005 - 23:08 #8
tak for point ;-))
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