Esimerkkinä seuraavat tiedot/taulukko: Sarake A Sarake B Rivi 1 Antti 12 Rivi 2 Bertta 14 Rivi 3 Cecilia 15 Rivi 4 Dave 22 Miten onnistuu (helposti) taulukon automaattinen lajittelu suuruusjärjestykseen aina kun jonkun henkilön data sarakkeessa B vaihdetaan? Esim. Bertan tieto vaihdetaan 14 -> 16, jolloin enterin painalluksella Bertan rivi vaihtuu riviksi 3 (ja Cecilian rviksi 2). Eli taulukon tiedot olisivat automaattisesti suuruusjärjestyksessä datamuutoksen jälkeen. Juu tiedän, että voin valita solun B1 ja painaa "sort a->z" -nappulaa ... mutta hiirikäsi väsyy, jos rivejä on paljon.
Tämän tyylinen automatisointi vaatii makrojen käyttöä. Tein VBA:lla hieman vaikeamman kautta, mutta laitan kuvan alle pelkistetyn koodin. 1. Avaa työkirja ja paina hiiren oikealla napilla alalaidassa aktiivista välilehteä -> valitse Näytä koodi. 2. Microsoft Visual Basic for Applications -ikkunassa valitse vasemman laidan listasta haluttu taulukko. 3. Ikkunan pitäisi olla vakiona tyhjä, joten liitä seuraava koodi siihen: Code: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("C2").Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub Huom 1. Muokka koodissa oleva "C2" sinun otsikkosoluksi ja "C3" mistä eteenpäin noita tietoja automaattisesti järjestellään. Huom 2. Taulukko pitää nyt tallentaa makroja tukevaan muotoon. VBA:n ikkunasta paina sinistä Save-nappia ja käytä tiedostomuotona: Excel-työkirja (makrot käytössä) (*xlsm) (Normaali Excel-työkirja *xlsx tai vielä vanhempi *.xls eivät tue makroja) Viitteenä ohje englanniksi.
Versiossa 365 on näköjään uusi SORT -funktio, jolla homma (ja enemmänkin) näyttäisi toimivan: https://www.ablebits.com/office-addins-blog/2020/06/24/excel-sort-function-auto-sort-data-formula/ Mutta ei vanhemmissa Excel'eissä ... Kiitoksia!