Avatar billede folj Forsker
21. marts 2017 - 12:15 Der er 2 kommentarer og
2 løsninger

Excel-VBA sortering

Jeg har kreeret en vba-procedure der opbygger 5 eller 6 arrays med en række navne (tekststrenge) i hvert array.

Nu hvor jeg står med  5 eller 6 arrays, skal jeg sikre mig at jeg behandler det array der indeholder færrest poster først. Hvis der eksempelvis er et array med kun 2 navne, så skal jeg have fat i det først.

Jeg bliver altså nødt til at lave en lille form for sortering så jeg tager det mindste array først.
Er der nogen simpel måde at tilgå det på?

Jeg ar lige siddet og læst om sortering af arrays, og det bliver godt nok langhåret.
Nogen kunne finde på at foreslå mig at skrive noget ind i et sheet, og sortere i det sheet, og derefter hente ind i et array igen, men det ligger så vidt jeg ved ud over havd der kan udføres af en vba brugerdefineret function.

Jeg har selv tænkt, at da det kun handler om sortering af 5-6 ting, der skal tages i den rigtige rækkefølge, så kan jeg måske lave en ubound på hver for at tælle størrelse, og lave noget ala håndsortering.
Altså hvis første array er det mindste så skal det tages først, ellers tester vi det næste og spørger om det er den mindste...
Avatar billede Dan Elgaard Ekspert
21. marts 2017 - 15:27 #1
Punkt 1, hvilket Array er størst:

Dette kan du teste med UBound()
If UBound(Array1) > UBound(Array2) Then  (o.s.v.)

Punkt 2, sortering af et Array:
http://www.EXCELGAARD.dk/Bib/Array/Funktioner/ArraySort/
Avatar billede folj Forsker
23. marts 2017 - 10:00 #2
@pistolprinsen:
Punkt 1: ja det var jo det jeg selv var inde på i mit oplæg...

punkt 2: sortering af arrayet er  ikke nødvendigt - jeg skal blot behandle det array med færrest poster først.

Jeg afventer lige og ser om der skulle komme andre bud, på en nem og overskuelig løsning
Avatar billede Dan Elgaard Ekspert
24. marts 2017 - 08:26 #3
Jamen, hvis du skal behandle det Array, der har færrest poster først, så skal du blot benytte LBound()

If LBound(Array1) < LBound(Array2) Then  (o.s.v.)
Avatar billede Dan Elgaard Ekspert
24. marts 2017 - 08:28 #4
FEJL!
Jeg læste det lige som laveste post nummer - FORKERT!

Formlen for at finde antal poster i et Array er:

AntalPoster = UBound(Array) - LBound(Array) + 1

Og, på den måde kan du let finde det Array, der har færrest antal poster.

Undskyld misforståelsen...
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