Avatar billede Sidsel Seniormester
27. september 2018 - 17:20 Der er 6 kommentarer

sorter en bunke værdier efter længde og flyt til nye celler

Hej.

Jeg skal via VBA kodning markere en kolonne og hvis der er nogle værdier som er kortere end 8 tal skal værdien i cellen flyttes en kolonne til venstre, men jeg kan ikke umiddelbart regne ud hvordan jeg gør det?

Er der nogen som kan hjælpe mig?
Avatar billede kim1a Ekspert
27. september 2018 - 18:10 #1
Hvad har du i forvejen?
Din formulering af spørgsmålet gør at jeg personligt tænker du måske er ny i VBA.

Det nemmeste du kan er at lave et loop der starter ved række 1 (eller 2 hvis der er overskrifter), kontrollerer længden af det der står i cellen og så flytter den, derefter går videre til næste række.

Her et eksempel (utestet) der løber række 2 til 100 igennem:

For r = 2 to 100

if Len(range(r,3).value) < 8
then Range(r,3).Cut Range(r,2)
end if
next r
Avatar billede store-morten Ekspert
27. september 2018 - 20:15 #2
Sub test()
For Each c In Range("B2:B10").Cells
    If Not IsEmpty(c) Then
        c.Activate
        If Len(c) < 8 Then
        ActiveCell.Cut ActiveCell.Offset(0, -1)
        End If
    End If
Next c
End Sub
Avatar billede finb Ekspert
28. september 2018 - 08:48 #3
Ad 2:
Skelnes der mellem tal/tekst ?

Sub test()
For Each c In Range("B2:B10").Cells
    If Not IsEmpty(c) Then
        c.Activate
        If Len(c) < 8

??? AND ISnUmerical() = TRUE ???

Then
        ActiveCell.Cut ActiveCell.Offset(0, -1)
        End If
    End If
Next c
End Sub
Avatar billede kim1a Ekspert
28. september 2018 - 08:58 #4
Du skriver det er værdier i cellerne, ikke noget om tekst :-)

Men klart det er en anden ting, lyder fornuftigt den vej du er på med #2
Avatar billede store-morten Ekspert
28. september 2018 - 10:54 #5
Sub test()
For Each c In Range("B2:B10").Cells
    If Not IsEmpty(c) Then 'spring over tomme
    If IsNumeric(c) Then 'spring over hvis ikke tal
        c.Activate
        If Len(c) < 8 Then
        ActiveCell.Cut ActiveCell.Offset(0, -1)
        End If
    End If
    End If
Next c
End Sub
Avatar billede Sidsel Seniormester
28. september 2018 - 14:01 #6
Undskyld jeg har taget jeres tid, jeg fik faktisk ikke brug for det alligevel, så jeg har heller ikke fået testet om jeres løsninger virker.

Jeg tester hvis jeg får brug for det en anden gang, og så skal jeg nok markere løsning.
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