Sorteren variabel gebied

Status
Niet open voor verdere reacties.
Zorg er eerst eens voor dat de invoer correct is. In jouw voorbeeldje staat nergens een kolomkop 'datum' dus daarop sorteren zal zeker niet lukken.
 
misschien zo

Code:
Sub test()
With Sheets("blad1")
    .Range("B" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row).Sort _
    key1:=.Range("C" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row), _
    Order1:=xlAscending
End With
End Sub

mvg
Leo
 
Leo,
Het werkt ten dele.
Als je namelijk de onderste 2 datums in kolom F verwijder dan doet hij het niet goed jouw formule.
Jaap
 
zal er nog een stukje aanmoeten

Code:
Sub test()
With Sheets("blad1")
    .Range("B" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row).Sort _
    key1:=.Range("C" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row), _
    Order1:=xlAscending, [COLOR="#FF0000"]Header:=xlYes[/COLOR]
End With
End Sub

mvg
Leo
 
Dat was nog laat gisteren avond zeg , 23:31uur!!

Werkt nu prima. Bedankt

Leo , ik begrijp echter niet alles omdat ik het mezelf aangeleerd heb uit het boekje
van Wim de Groot , Programmeren met VBA , en daar staat niet alles in.
Wat nu als er meer rijen en/of kolommen komen.
Wat moet ik dan wijzigen,
Kan , wil , jij me dat uitleggen?

Vriendelijke groet Jaap
 
Hoi Jaap,
range wordt bepaald door dit stukje

Code:
.Range("B" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row).Sort

vertaald; vanaf kolom B rij (tel de gevulde cellen in kolom 6) tot en met kolom F rij (tel gevulde cellen in kolom 2)
dus kan eenvoudig aangepast worden naar meer kolommen.

mvg
Leo
 
Leo,
Alweer wat van je opgestoken.
Ik ga er mee aan de slag en kijken of ik eruit kom.
Mijn hartelijke dank nog en een fijne kerst gewenst alvast de beste wensen voor het nieuwe jaar.

Vriendelijke groet , Jaap
 
toch kleine correctie
het is niet tel gevulde cellen
maar zoek laatst gevulde cel

prettige kerst en jaarwisseling
Leo
 
De key1 kan wel iets korter, en eigenlijk kan de 'Order1:' er ook nog wel uit daar 'xlAscending' default is.
Code:
Sub test()
With Sheets("blad1")
    .Range("B" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row).Sort _
    key1:=.Range("C" & Cells(Rows.Count, 6).End(xlUp).Row), Header:=xlYes
End With
End Sub

ingekort:
Code:
Sub test()
With Sheets("blad1")
  .Range("B" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row).Sort .Range("C" & .Cells(Rows.Count, 6).End(xlUp).Row), , , , , , xlYes
End With
End Sub

En dan kan 'xlyes' nog weer omgezet worden in een 1.
Code:
Sub test()
With Sheets("blad1")
  .Range("B" & .Cells(Rows.Count, 6).End(xlUp).Row, "F" & .Cells(Rows.Count, 2).End(xlUp).Row).Sort .Range("C" & .Cells(Rows.Count, 6).End(xlUp).Row), , , , , , 1
End With
End Sub
 
1. gebruik altijd cel A1, dan kun je altijd gebruik maken van 'currentregion'. (opzoeken in de hulpfunktie van de VBEditor)
2. controleer de gegevens in kolom B: sommige daarvan bevatten geen datum maar een tekst
3. zoek in de hulpfunktie van de VBEditor naar Range.Sort voor de argumenten van de methode 'sort'
4. Hou het simpel

Code:
Sub M_snb()
   With Sheet1
      .Cells(1).CurrentRegion.Sort .[E1], 2, .[B1], , 1, , , 1
   End With
End Sub
 
Laatst bewerkt:
Dat is inderdaad een stuk handiger; eerst even sorteren op kolom E als je in A1 begint.
 
Snb en HSV , Bedankt voor jullie moeite en geboden oplossingen.

Ik heb jullie advies gevolgd en er weer heel wat van opgestoken.

Ook voor jullie beide , fijne dagen en een goed nieuwjaar gewenst.

Vriendelijke groet , Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan