Avatar billede mrkr Juniormester
17. september 2008 - 21:11 Der er 7 kommentarer og
1 løsning

flytte en indhold en linje op hvis cellen ikke er tom

Jeg har rodet rund med en lille makro der flytter værdier fra celler i kolonne B en linje op, men jeg kan ikke få det til at virke.

er der en venlig sjæl der lige kan give mig et skub i den rigtige retning


Sub flytEnLinjeOp()
Dim cell As Range

For Each cell In Range("b5:b200")
If cell <> "" Then
.....??
End If
Next


End Sub

Det lave pointtal skyldes at kontoen er tom :-(
Avatar billede kabbak Professor
17. september 2008 - 21:23 #1
der er 2 muligheder, efter hvad du ønsker

' sletter tomme celler i kolunnen og flytter op, andre data følger ikke med
Range("b5:b200").SpecialCells(xlCellTypeBlanks).Delete Shift:=(xlUp)

'Sletter rækker, hvor der er tomme celler i B kolonnen
Range("b5:b200").SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=(xlUp)
Avatar billede mrkr Juniormester
17. september 2008 - 21:38 #2
det skal være noget i stilen med løsning 1, da jeg ikke kan slette linjer. Der står tal i alle linjer, bare ikke nødvendigvis i kol B.

hvis jeg laver en sub som denne:

sub test()
Range("b5:b200").SpecialCells(xlCellTypeBlanks).Delete Shift:=(xlUp)
end sub

Så kommer der tal i alle celler, også dem som er tomme før jeg forsøger at flytte.
Avatar billede mrkr Juniormester
17. september 2008 - 21:39 #3
Hvis der findes en løsning med
for each cell...

Vil det være optimal.
Det kan jeg nemlig bruge i en anden hensende. :-)
Avatar billede kabbak Professor
17. september 2008 - 21:55 #4
når du bruger denne
Range("b5:b200").SpecialCells(xlCellTypeBlanks).Delete Shift:=(xlUp)

Vil alle tomme celler i kolonne B blive slettet og de fyldte i samme kolonne flyttes op, men det betyder også, at der ikke er sammenhæng i data, hvis de står på samme linje.
Avatar billede kabbak Professor
17. september 2008 - 22:20 #5
du skriver "flytter værdier fra celler i kolonne B en linje op"
det gør du ved at slette B4, så rykker alle celler i B kolonnen
Avatar billede mrkr Juniormester
17. september 2008 - 22:25 #6
Ok, jeg havde vist ikke lige læst din første tekst.
Nu har jeg forstået hvad den gør. Men det er desværre ikke helt det jeg søger.

Det jeg skal bruge skal gøre sådan:
Hvis en celle i området b5:b200 ikke er tom, så skal den flyttes en linje op, og kun EN. f.eks fra b45 til b44
Herefter skal makroen gå videre og først gøre noget igen når den kommer til en celle der ikke er tom.
Her skal den igen flytte den enkelte celle 1 linje op osv.
Avatar billede kabbak Professor
17. september 2008 - 22:47 #7
Sub flytEnLinjeOp()
Dim cell As Range
For Each cell In Range("b5:b200")
If cell <> "" Then cell.Cut cell.Offset(-1, 0)
Next
End Sub
Avatar billede mrkr Juniormester
17. september 2008 - 22:53 #8
JEP!

Der var den.
Beklager hvis jeg ikke fik forklaret mig ordentligt i første omgang.

Mange tak for hjælpen.
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