Avatar billede pbfisker Nybegynder
07. november 2007 - 13:48 Der er 15 kommentarer og
1 løsning

Flere linjer?

Jeg har et excelark med et varierende antal rækker (ca. 5000 pt.) der minder om nedenstående:

Peter    X    10    60
Søren    Y    20    70
Lars    X    30    80
Knud    X    40    90
John    Y    50    100

Det jeg gerne vil have en løsning på er, hvordan jeg får de rækker hvor kolonne B indeholder et "Y" delt ud på to seperate rækker. (se nedenstående)

Peter    X    10
Søren    Y    20
Søren    Y    7
Lars    X    30
Knud    X    40
John    Y    50
John    Y      100

Det er vigtigt at rækkerne kommer fortløbende.

Håber I har masser af gode idéer :)

På forhånd tak

PF
Avatar billede excelent Ekspert
07. november 2007 - 16:41 #1
Prøv lige på en kopi først (forudsætter data i kolonne A:D)

Sub IndsætRK()

Set sh = Sheets("Ark1")
rk = sh.Cells(65500, 1).End(xlUp).Row

For t = rk To 1 Step -1
If Cells(t, 2) = "Y" Then
Rows(t + 1).EntireRow.Insert
Cells(t, 1).Copy Cells(t + 1, 1)
Cells(t, 2).Copy Cells(t + 1, 2)
Cells(t, 4).Cut Cells(t + 1, 3)
End If
Next

End Sub
Avatar billede pbfisker Nybegynder
08. november 2007 - 11:56 #2
Virker desværre ikke. Får en compile error: variable not defined.
Avatar billede excelent Ekspert
08. november 2007 - 13:00 #3
så dimmer vi lige variablerne

Sub IndsætRK()
dim sh,rk,t
Set sh = Sheets("Ark1")
rk = sh.Cells(65500, 1).End(xlUp).Row

For t = rk To 1 Step -1
If Cells(t, 2) = "Y" Then
Rows(t + 1).EntireRow.Insert
Cells(t, 1).Copy Cells(t + 1, 1)
Cells(t, 2).Copy Cells(t + 1, 2)
Cells(t, 4).Cut Cells(t + 1, 3)
End If
Next

End Sub
Avatar billede pbfisker Nybegynder
08. november 2007 - 15:47 #4
Nu fejler den ikke, men til gengæld sker der ikke en pind... Er det muligt, at få et eventuelt resultat smidt over i ark2 ?
Avatar billede excelent Ekspert
08. november 2007 - 16:54 #5
ja det er ikke noget problem, men da koden ikke virker,
må du hellere fortælle hvor dine data er nu
Avatar billede pbfisker Nybegynder
08. november 2007 - 17:34 #6
mine data ligger som de gør oprindeligt - i ark1
Det skal dog nævnes, at der er mere end de 4 kolonner i det viste eksempel (nærmere 20).
Avatar billede excelent Ekspert
08. november 2007 - 17:46 #7
Havde tænkt mig at kopiere de 4 kolonner til ark2 og så
indsætte de ekstra rækker der, så hvilke 4 kolonner er det?
Avatar billede gider_ikke_mere Nybegynder
08. november 2007 - 21:32 #8
Der er vel ikke tomme mellemrum før eller efter "Y"?
Avatar billede gider_ikke_mere Nybegynder
08. november 2007 - 21:34 #9
Prøv med: If UCase(Trim(Cells(t, 2))) = "Y" Then
Avatar billede pbfisker Nybegynder
09. november 2007 - 10:34 #10
Der er ingen tomme mellemrum før eller efter "Y".

Det er jo forskellige kolonner alt efter om det er den "oprindelige række" eller den nye række. Hvis det er den oprindelige skal den kopiere kolonne 20 til 29, og den nye række skal indeholde kolonne 31 til 39.
Avatar billede excelent Ekspert
09. november 2007 - 16:26 #11
Forvirringen breder sig
kolonner er de lodrette søjlerne A,B,C,D osv
rækker er de vandrette linier 1,2,3,4,5 osv

Jeg aner trods flere indlæg stadig ikke hvor kolonnen med Y'er er
eller hvor mange kolonner der skal kopieres med over i ark2.

Går dog stadig ud fra det er kolonne med Y'er samt kolonnen
til venstre herfor, samt de 2 kolonner tilhøjre herfor koden
skal bearbejde ?
Avatar billede pbfisker Nybegynder
12. november 2007 - 09:11 #12
Jeg har ikke være god nok til at formulere mig, undskyld. :)
Kolonnen med Y'er er kolonne K (nr. 11) og de kolonner, der skal kopieres er hhv. fra T til AC og AE til AM. Har du en mailadresse jeg eventuelt kan sende dig filen?
1000 tak fordi du gider hjælpe!
Avatar billede excelent Ekspert
12. november 2007 - 14:07 #13
ja det er nok lettere at se når jeg har filen
send til pm@madsen.tdcadsl.dk
Avatar billede pbfisker Nybegynder
14. november 2007 - 15:30 #14
Sendt :)
Avatar billede excelent Ekspert
14. november 2007 - 21:26 #15
ok prøv denne :

Sub IndsætRK()
Dim sh1, sh2, rk1, t
Set sh1 = Sheets("Oprettelse")
Set sh2 = Sheets("Ark2") ' ret evt til aktuel arknavn

rk1 = sh1.Cells(65500, "T").End(xlUp).Row

sh1.Range("T1:AC1").Copy sh2.Range("A1")

For t = 2 To rk1

sh1.Range("T" & t & ":AC" & t).Copy
sh2.Cells(sh2.Cells(65500, 1).End(xlUp).Row + 1, "A").Select
Selection.PasteSpecial Paste:=xlPasteValues

If InStr(1, sh1.Cells(t, "K"), "Y") <> 0 Then
sh1.Cells(t, "T").Copy
sh2.Cells(sh2.Cells(65500, 1).End(xlUp).Row + 1, "A").Select
Selection.PasteSpecial Paste:=xlPasteValues
sh1.Range("AE" & t & ":AM" & t).Copy
sh2.Cells(sh2.Cells(65500, 2).End(xlUp).Row + 1, "B").Select
Selection.PasteSpecial Paste:=xlPasteValues
End If

Next
Application.CutCopyMode = False
Cells(1, 1).Select
End Sub
Avatar billede excelent Ekspert
19. november 2007 - 17:34 #16
ok velbekom
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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