Avatar billede Jacob Praktikant
23. januar 2024 - 14:17 Der er 11 kommentarer

Definere range og sortere

Hej

Jeg har en table i Excel, som jeg med en knap vil kunne sorterer.
Udfordringen er at tabllen ikke altid har data i alle rækker.
Den skal sorterer på kolonne j fra størst (øverst) til mindst og den skal kun sortere den del, hvor der er data.
Den del hvor der ikke er data skal ikke sorters med og i de celler står der "-",
Hvis jeg sorterer på hele tabellen, kommer de "tomme" til at stå øverst og det skal de ikke. 
Jeg forestiller mig at jeg skal loope igennem koloonne j fra række 8 ( hvor tabellen starter) og ned til den række som indeholder en sting længde større end 1 og så definere et range (fra B8 til Jx) ud fra det, der så sorteres på kolonne j.
Jeg kan virkelig godt bruge noget hjælp?

'    ActiveWorkbook.Worksheets("sheet1").ListObjects("Table2").Sort. _
'      SortFields.Clear
'    ActiveWorkbook.Worksheets("sheet1").ListObjects("Table2").Sort. _
'        SortFields.Add Key:=Range("Table2[ndicator]"), _
'        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
'    ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table2").Sort. _
'        SortFields.Add Key:=Range("Table2[Column1]"), SortOn:=xlSortOnValues, _
'        Order:=xlAscending, DataOption:=xlSortNormal
'    With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table2").Sort
'        .Header = xlYes
'        .MatchCase = False
'        .Orientation = xlTopToBottom
'        .SortMethod = xlPinYin
'        .Apply
'    End With
Avatar billede kim1a Ekspert
23. januar 2024 - 15:15 #1
Det ligner at dine date er arrangeret i en tabel, således at det bliver svært at selektere anderledes.

Din ide med at loope igennem er god, men det kræver nok nærmere at du enten sletter eller laver en filtreringskolonne måske?

Det kan også være du blot kan filtrere "-" og blanke fra inden du laver din sortering?
Avatar billede MaxZpaD Guru
24. januar 2024 - 09:10 #2
Udfordringen er, at man ikke kan "del-sortere" de forskellige sektioner ud fra, om de indeholder data eller ej. Hele kolonnen bliver altid sorteret ud fra det samlede indhold.
Så de celler, hvori der lige nu står "-", skal have påført en værdi, der ud fra et sorterings-synspunkt er mindre end alle de andre værdier, som du gerne vil have sorteret.
Hvis din sortering er på talværdier, skal du altså erstatte "-" med en talværdi, som med sikkerhed er lavere end alle de "rigtige" værdier.
Hvis du sorterer på tekstværdier, skal du finde et "tekst-udtryk", som Excel sorteringsmæssigt opfatter som lavere (f.eks. er "a" lavere end "y").
Avatar billede Jacob Praktikant
24. januar 2024 - 12:08 #3
Tak MaxZpaD

Jeg har nu prøvet at gøre som beskrevet og det lykkes frem til at jeg vil skrive formlen "tilbage" til de celler med "-".

Den skriver fint formlen ind, men det fremgår som tekst og ikke som en formel.

Her er det jeg prøver at skrive formlen "tilbage" med.

    For i = 8 To 19
   
        If Cells(i, 10).Value = 0 Then
            Cells(i, 10).Formula = "+IFNA(VLOOKUP($E$4&$B" & i & ";Sheet1!test;9;0);""-"")"
        End If
    Next
Avatar billede MaxZpaD Guru
24. januar 2024 - 12:22 #4
Jeg gætter på, at cellernes NumberFormat er Tekst.

Prøv evt. med Cells(i, 10).NumberFormat = "General" i linjen før formlen indsættes.
Avatar billede Jacob Praktikant
24. januar 2024 - 14:32 #5
Hmm... nææ det er ikke det.

Det er lidt underligt. Hvis jeg ændre "+" til "=" så det ser således ud - så får jeg en run-time error.

    For i = 8 To 19
 
        If Cells(i, 10).Value = 0 Then
            Cells(i, 10).Formula = "=IFNA(VLOOKUP($E$4&$B" & i & ";Sheet1!test;9;0);""-"")"
        End If
Avatar billede MaxZpaD Guru
24. januar 2024 - 14:51 #6
Ok. Prøv at udskifte semikolon i formlen med komma.
Avatar billede Jacob Praktikant
24. januar 2024 - 15:02 #7
Jeg tror problemet er at den formel der skrives ind ender på:

...;Sheet1test;9;0);"-")" og ikke bare...;Sheet1test;9;0);"-")

Hvordan får jeg det sdiste " væk?
Avatar billede Jacob Praktikant
24. januar 2024 - 15:05 #8
Hmm - måske ikke alligevel
Avatar billede MaxZpaD Guru
24. januar 2024 - 15:07 #9
Jeg får det til at virke med denne kode:

.Formula = "=IFNA(VLOOKUP($E$4&$B" & 1 & ",Sheet1!test,9,0),""-"")"

Du skal have det sidste " med, fordi det afslutter " som står før =IFNA
Avatar billede MaxZpaD Guru
24. januar 2024 - 15:08 #10
Hov, og du skal lige udskifte "& 1 &" i min formel med "& i &"
Avatar billede Jacob Praktikant
24. januar 2024 - 16:15 #11
Tak. Men jeg får det stadig ikke til at virke :-(
Hverken med semikolon eller komma.
Hvis jeg kun starter med = så får jeg run-time error 1004
Og hvis jeg prøver at starte med += så skriver den formlen som tekst i cellerne.
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