• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Auto sorteren op Alfabet

  • Onderwerp starter Onderwerp starter Imod
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Imod

Gebruiker
Lid geworden
13 nov 2003
Berichten
481
In het mogelijk automatisch te sorteren op alfabet,

A: met formules?
B: met VBA?

Niet met een macro wat dit ken ik wel.

mvg Imod
 
Open de VBA editor (CTRL+F11)
Plaats de volgende code onder het werkblad, dus niet in een module.
In dit geval wordt bij elke wijziging kolom C (Columns("C:C").Select) automatisch gesorteerd op alfabet.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Columns("C:C").Select
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("C1").Select
End Sub
 
Met formules gaat ook, maar dat raad ik je niet aan.
Als je cel naar beneden door wilt kopieeren veranderd de rang waarde (K) niet mee.
Tussen oplossing is het werken met een extra kolom.

{Edit} Werkt helaas alleen met getallen en niet met tekst
 

Bijlagen

Laatst bewerkt:
Hallo allemaal

Mijn dank voor de zeer snelle reactie's
Deze kan ik goed gebruiken:thumb:

mvg Imod:D
 
hallo allemaal

Ik had nog even wat
Hoe te doen als je een aantal cellen wilt rangschikken?

Columns("C5:C12").Select
Dit geeft een foutmelding. (is logisch - het is nu geen Columns meer)

En als je nu ergens anders iets invult dan springt de actieve cel steeds naar C3 en dit moet niet als het even kan.

PS Withaar;
Het rangschikken op formule heb je nu op getallen en niet op alfabet!!

mvg Imod
 
... Had ik niet gecontroleerd, maar werkt inderdaad alleen met getallen en niet met tekst.
Zal eens kijken of daar ook iets voor te vinden is... ,maar geef even aan of je het zou willen gebruiken, ik heb zo'n vermoeden dat het wel eens lastig zou kunnen zijn.
 
Hallo Withaar

Als het moeilijk is te maken en dit in te bakken in een blad dan hoef je hier niets aan de doen.

Ik zelf kon er niet opkomen(formules)

Ik zal de makkelijke oplossing gebruiken VBA of formules.

mvg Imod
 
Hoe te doen als je een aantal cellen wilt rangschikken?
Columns("C5:C12").Select
Dit geeft een foutmelding. (is logisch - het is nu geen Columns meer)

En als je nu ergens anders iets invult dan springt de actieve cel steeds naar C3 en dit moet niet als het even kan.

Columns("C5:C12").Select moet je veranderen in
Range("C5:C12").Select

Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

C1 bepaalt op welke kolom gesorteerd wordt.
Order1:=xlAscending is oplopend sorteren. (xlDescending is aflopend)

De laatste regel Range("C1").Select plaatst de cursor telkens bovenaan. Verwijder deze als je dat niet wilt.
 
Selectie

Hallo Jan;

Dit heb ik in het blad gezet en het werk ook goed maar nog een probleempje

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Range("B5:B14").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Na invullen op het blad van een willekeurige cel dan worden de cellen B5:B14 geselecteerd.
En dit moet eigenlijk de cel zijn die je invult

Zou je hier nog eens naar willen kijken?
mvg Imod
 
Hoi Imod,

dat is als volgt op te lossen.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Range("B5:B14").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

In eerste instantie werden B5:B14 geselecteerd en daarna gesorteerd. Door select en selection weg te halen wordt het bereik direct gesorteerd. De cursor blijft staan waar die stond. De macro wordt hierdoor ook iets korter en sneller al zul je dat hier niet merken.
 
Hallo Jan;

Helemaal prefect
Werkt goed en snel

1 vraagje nog:

Sort Key1:=Range("B1")
Deze zin begrijp ik niet helemaal
Waarom B1?

Ik sluit de vraag af
In ieder geval bedankt voor de uitleg
mvg Imod
 
Voor de benaming van de kolom waarop gesorteerd moet worden, wordt de eerste cel van de kolom gebruikt. Dat is tenminste wat ik er uit kan concluderen. Als je een sorteermacro opneemt wordt altijd de 1e cel uit de kolom ingevuld.
 
Hoi Imod,

Ten eerste een uitbreiding van je programmacode:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If not intersect(Target, Range("B5:B14")) is nothing then
Range("B5:B14").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End if
End Sub

Waarom? Zonder deze toevoeging wordt bij iedere wijziging op je werkblad het bereik opnieuw gesorteerd, met de extra code alleen bij wijzigingen in B5:B14.

Met formules kan ook! Al moet het het een macro-formule:
In D5:D14 staan 1 t/m 10
E5: =INDEX($B$5:$B$14;AFRONDEN(REST(KLEINSTE(AANTAL.ALS($B$5:$B$14;"<="&$B$5:$B$14)+(RIJ($B$5:$B$14)-4)/1000;AANTAL.LEGE.CELLEN($B$5:$B$14)+$D5);1)*1000;0))
Invoeren met Shift+Ctrl+Enter
Toelichting op formule
(RIJ($B$5:$B$14)-4)/1000, zorgt ervoor dat iedere naam een uniek nummer wordt, de -4 staat in de formule om het rijnummer te laten op lopen vanaf 1.

Jeroen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan