Avatar billede HBC Seniormester
04. februar 2021 - 13:44 Der er 4 kommentarer og
2 løsninger

Clear contents vba

Hej gutter,

Jeg har brug for lidt hjælp til en sub.
Jeg har mit område A:A som indeholder tekst i nogle og tal i andre celler.
Jeg har brug for, at de celler som indeholder tal bliver bevaret i cellerne og de celler som indeholder andet bliver indholdet slettet.
Alternativt så skal cellerne i området som indeholder tal større end 300000 kopieres til 3 kolonne.
Det ville nok faktisk være endnu bedre.

På forhånd tak.
Avatar billede kim1a Ekspert
04. februar 2021 - 13:54 #1
Du kan enten løbe cellerne igennem enkeltvis, men hvis det er en længere kolonne ville jeg nok vbamæssigt indsætte:
=if(A1>300000;A1;"") også bagefter kopiere denne nye kolonne ind indsætte som værdi inden du rydder A.

Jeg håber det giver mening, hvis du har brug for inspiration til koden så sig til.
Avatar billede jens48 Ekspert
04. februar 2021 - 14:44 #2
Inspireret af Kim1as ide har jeg lavet denne makro:

Sub Flyt()
Dim LastRow As Long
LastRow = Cells(1048576, 1).End(xlUp).Row
Range("C2:C" & LastRow).FormulaR1C1 = "=IF(AND(ISNUMBER(RC[-2]),RC[-2]>300000),RC[-2],"""")"
Range("C2:C" & LastRow).Copy
Range("C2:C" & LastRow).PasteSpecial xlPasteValues
Range("A2:A" & LastRow).ClearContents
End Sub
Avatar billede HBC Seniormester
04. februar 2021 - 15:03 #3
Hej begge,

Den sidste fungere tildels.
Har måske ikke forklaret det ordentligt, sorry.
Den sidste kopierer fint tallene over, men den kopierer også de tomme celler over, så de eksisterende tal i kolonne 3 bliver overskrevet.

På forhånd tak 👍
Avatar billede HBC Seniormester
04. februar 2021 - 15:19 #4
Jeg har lavet en macro, som laver den ønskede clear contents i kolonne 1, således at jeg bare skal have kopieret de celler som ikke er blanke.
Tænkte noget offset på 0, 3 men kan ikke huske hvordan jeg lige gør.
Er nok blevet lidt rusten.
Avatar billede HBC Seniormester
04. februar 2021 - 15:25 #5
Jeg ved, at jeg vil kunne løse det med en hjælekolonne og lidt sammenkædning, men vil helst undgå dette.
Avatar billede jens48 Ekspert
04. februar 2021 - 15:48 #6
Prøv med denne:

Sub Flyt()
Application.Calculation = xlCalculationManual
Dim LastRow, x As Long
LastRow = Cells(1048576, 1).End(xlUp).Row
For x = 2 To LastRow
If Cells(x, 1) > 300000 And IsNumeric(Cells(x, 1)) Then
Cells(x, 3) = Cells(x, 1)
End If
Next
Range("A2:A" & LastRow).ClearContents
Application.Calculation = xlCalculationAutomatic
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