![]() |
[INF] probleempje bij programmeren in excel
Heeft er iemand hier verstand van programmeren met Visual Basic? Ik heb een matrix, waarbij ik de rijen met elkaar wil verwisselen waardoor de INDEXwaarde zo klein mogelijk wordt.
een willekeurig matrix als deze: rij 1. 2 5 2 3 0 2 rij 2. 2 4 5 6 7 3 rij 3. 3 3 9 5 0 9 rij 4. 1 4 2 5 6 3 Ik kan in excel met visual basic een rij verwisselen met een andere rij. Nu wil ik alleen de vijf rijen in een zodanige volgorde zetten waardoor mijn INDEX formule de laagst mogelijke uitkomst geeft (het doet er even niet toe wat de INDEX formule is ;) ) Dus kortom het kan zijn dat alle rijen verwisseld worden. Maar ik wil bv de uitkomst krijgen van de optimale positie van rij 1. En daarna apart nog een keer op dat moment (nadat rij 1 op die optimale positie is) de optimale positie van rij 2 bepalen etc. Het wordt dan uiteindelijk wss niet de optimale oplossing, maar iets dat er bij in de buurt komt (maar dat stond zo ook in mijn opdracht) Hopelijk kan iemand mij hiermee helpen, en is het nog een beetje duidelijk ;) Alvast bedankt! |
Eigenlijk komt dit neer op de gekende sorteeralgoritmes; waarbij je dan gaat sorteren op die index-waarde. Het makkelijkste lijkt me een selection sort (voor een klein aantal maakt het meestal niet uit welk algoritme je gebruikt).
Op WikiPedia staat er meer uitleg, enkele heel simpele mogelijkheden zijn: http://en.wikipedia.org/wiki/Selection_sort en http://en.wikipedia.org/wiki/Insertion_sort Waar de selection sort op neerkomt is eigenlijk het volgende (in Pascal-pseudocode) Code:
FOR i := first TO last Afhankelijk van waarvoor het dient, is je werkwijze inderdaad misschien niet de meest optimale, lijkt me; maar het is voor heel wat werk optimaal genoeg :) Maar daarvoor is die index-formule dus onder andere wel van belang (net zoals je eigenlijke doel; al krijg je in informatica toch meestal geen al te moeilijke optimalisatieproblemen, als je backtracking gehad hebt, kan je dat ook altijd proberen). Wat je ook altijd kan doen is, gewoon bij elke rij een extra kolom/rij maken en dan zal er in Excel wel een functie zitten die die rijen automatisch kan sorteren op die bepaalde index-kolom en daarna gooi je die kolom weer gewoon weg :) Dat gaat minder werk zijn (maar wel een beetje prutsen met die extra kolom). |
Alle tijden zijn GMT +1. Het is nu 03:56. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.