Avatar billede duxz Nybegynder
28. marts 2011 - 20:32 Der er 5 kommentarer og
1 løsning

Makro VBA - Loop ned igennem liste returner værdi til anden celle såfremt værdi ikke 0

Hej Rødder!

Jeg ved at der sidder én derude og slikker sig om munden over de nemme point, men jeg kan simpelthen bare ikke knække nøden.

Mit problem er som følger:

Jeg har en liste med nogle faste parametre i de første kolonner, derefter kommer der nogle værdier. For at lette noget indlæsningsværk vil jeg "forkorte" listen ved at sortere de rækker fra der indeholder værdien 0. Jeg er ikke interesseret i en autofilter løsning, men en VBA løsning.

En simplificeret skitse kunne se således ud:

A        B
1111    500
2222    0
3333    0
4444    0
5555    1000

Jeg forestillede mig noget i retning af: Skriv aktivcelleværdi såfremt værdien ikke er 0, hvis værdien er 0 søg da frem til næste celle med en værdi <> 0.

Resultatet skal bare smides et sted i det aktive ark....det er ikke så vigtigt det kan jeg selv finde ud af, men det er den der med at den skal finde næste værdi <> 0  der volder problemer.

Ser frem til at høre fra jer!! :)

Mvh

Martin
Avatar billede excelent Ekspert
29. marts 2011 - 15:38 #1
Skriver værdier i b1:b100 <>0 i kolonne F

for each c in range("b1:b100")
if c<>0 then c.offset(0,4)=c
next
Avatar billede duxz Nybegynder
30. marts 2011 - 08:33 #2
Hej excelent,

1000 tak for forslaget......det virker, men det jeg var ude efter var at....hmmm hvordan forklarer jeg det bedst?

Det der kommer ud af din kode er alle værdier <> 0, men de bliver bare forskudt 4 kolonner så de fremkommer i samme række. Det jeg er ude efter er mere i retning af:

A        B      C
1111    500    500
2222    0      1000
3333    0
4444    0
5555    1000

Hvis det giver mening?

Altså at 0 værdi rækkerne ignoreres, og de værdier der er <> 0 sættes efter hinanden.
Avatar billede duxz Nybegynder
30. marts 2011 - 09:15 #3
I øvrigt hvad er grunden til at du bruger c i din makro? c=cell? Ja jeg spørger bare fordi jeg har set forskelligt i forskellige makroer rundt omkring....har også tit set i brugt. Hvad er logikken?
Avatar billede excelent Ekspert
30. marts 2011 - 15:53 #4
c er valg som variabelnavn fordi det ligner celle
men kunne ligesåvel være cigar

For Each cigar In Range("b1:b100")
If cigar <> 0 Then Cells(Cells(1000, 4).End(xlUp).Offset(1, 0).Row, 4) = cigar
Next
Avatar billede duxz Nybegynder
30. marts 2011 - 16:31 #5
Lækkert nok det virker!  jeg forstår ikke helt denne del: "Cells(Cells(1000, 4).End(xlUp)" Cells(1000, 4) betyder det ikke række 1000, 4. kolonne? Den smider resultatet ind i d2, hvilket jeg går udfra den får fra "Offset(1, 0).Row, 4) = cigar"

Kan du uddybe? Uddyb som svar så får du point :D
Avatar billede excelent Ekspert
03. april 2011 - 14:28 #6
Cells(1000, 4).End(xlUp).Offset(1, 0).Row
finder næste ikke tomme celle, testet fra og med række 1000 og op

,4
indsætter værdier i kolonne 4 (D)
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