• 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.

Array in Excel

Status
Niet open voor verdere reacties.

conceal

Gebruiker
Lid geworden
29 mrt 2007
Berichten
73
Graag zou ik iets van een oplossing hebben voor het volgende:

Ik heb een tabel van 5 rijen en 5 kolommen. In de cellen staat per persoon een bepaalde score voor die werkplek. Ik ben op zoek naar de optimale indeling wat betreft personen en werkplekken. Hiervoor voer ik een berekening uit (zie VBA editor in het bestand 'Optimaal 5x5.xls'). Nu is het voor een kleine tabel zoals deze nog redelijk eenvoudig te programmeren, maar graag zou ik dit uitgebreid hebben naar een tabel van 150 bij 150 (of wellicht nog groter). Ik ben dus op zoek naar een array of zoiets dergelijk wat ervoor zorgt dat de lus niet enorm groot wordt. In het andere bestand ('Optimaal array.xls') staat een idee, maar deze werkt niet. Alvast bedankt!!!

Gegroet,
Maik
 

Bijlagen

  • Help mij.zip
    36 KB · Weergaven: 33
Iemand???

Weet iemand iets meer over array's dan misschien??? Een iets anders of groter voorbeeld dan wat de help-functie heeft???
 
Ik weet er wel wat over :eek: ;), maar euh, van je vraag en bijlage heb ik niet veel gesnapt...
 
Hi Wigi,

Wat dom van me... :eek: om de bestanden enigzins te kunnen volgen heb ik de tabbladen hier en daar aangepast en werkt het programma niet. Ik heb dit nu weer aangepast en toegevoegd. De 5x5 werkt, de array niet, vandaar deze vraag.
Maar ik zal het nog proberen duidelijker uit te leggen. Als ik een 2 bij 2 tabel heb, waarbij a en b personen zijn en c en d werkplekken, dan kan ik deze personen op twee manieren indelen. Namelijk:
- a werkt op c en b werkt op d
- of a werkt op d en b werkt op c.

/ c d
a 1 3
b 2 4

In de cellen staan getallen welke het kennisniveau representeren. Als ik de optimale combinatie zoek, dan ben ik op zoek naar de combinatie waarbij het product zo groot mogelijk is. Bij deze twee manieren horen dus twee berekeningen:
- 1*4 = 4
- 3*2 = 6
Dit zou betekenen dat de tweede manier de optimale is.

In de programmeercode heb ik een programma geschreven voor een tabel van 5 bij 5 en hierbij bereken ik voor elke combinatie wat het product van alle variabelen is. In de 'while-lus' heb ik elke keer een 'if-commando' ingebouwd, zodat voorkomen wordt dat er een getal voor een andere persoon (dan de personen die ervoor geweest zijn) uit dezelfde rij gekozen wordt. Er mogen immers geen personen op dezelfde werkplek werken, elke werkplek dient bezet te worden door slechts 1 persoon.
Omdat ik dit elke keer bereken heb ik ook een kleine 'if-lus' erin zitten wat het grootste product onthoudt en wegschrijft op werkblad 'Optimale optie'.
Voor deze 5 bij 5 tabel is het zo nog wel te programmeren, maar juist als de tabel groter wordt, dan wordt het lastig elke keer 'If rij5 <> rij4 Then' voor elke mogelijke combinatie te schrijven. Voor 100 rijen moet ik dan immers 99 if-lussen intypen. Een array zou hier een oplossing kunnen bieden, maar ik weet niet goed hoe ik dit in VBA en Excel moet doen. Hetzelfde geldt voor het elke keer typen van de 'While rij4 < 8' lus.
Ik ben dus in feite op zoek naar een manier om de programmeercode niet te groot te laten worden, maar wel de beste combinatie te halen uit een tabel van bijvoorbeeld 150 bij 150. Op sheet Tabel kun je zien dat dat dit zo'n 5,7134E+262 berekeningen zijn.

Ik hoop dat het nu enigzins duidelijk is. ;) Anders wil ik het natuurlijk nog wel een keer proberen uit te leggen. Alvast bedankt!

Groet,
Maikel
 

Bijlagen

  • Help mij.zip
    37,2 KB · Weergaven: 34
Hongaars Algoritme

Hi Wigi,

Blijkbaar heb ik een model wat nogal wat berekeningen vraagt (aangezien ik een tabel van 150 bij 150 wil). Om al deze berekeningen uit te voeren zou het jaren duren voordat ik een antwoord heb. Blijkbaar is m'n model dus niet toereikend. Ik wil nog steeds wel weten hoe een array werkt, maar zal toch zeker een ander model moeten hebben. Het model wat mogelijk een oplossing biedt is het Hongaars algoritme. Ik moet dit echter eerst nog bestuderen en dan kijken of het te programmeren is in Excel VBA. Als dit mogelijk is en het lukt me dan zal ik de code nog wel plaatsen.

Groet,
Maik
 
Hi Wigi,

Blijkbaar heb ik een model wat nogal wat berekeningen vraagt (aangezien ik een tabel van 150 bij 150 wil). Om al deze berekeningen uit te voeren zou het jaren duren voordat ik een antwoord heb. Blijkbaar is m'n model dus niet toereikend. Ik wil nog steeds wel weten hoe een array werkt, maar zal toch zeker een ander model moeten hebben. Het model wat mogelijk een oplossing biedt is het Hongaars algoritme. Ik moet dit echter eerst nog bestuderen en dan kijken of het te programmeren is in Excel VBA. Als dit mogelijk is en het lukt me dan zal ik de code nog wel plaatsen.

Groet,
Maik

Ik heb nog geen tijd gevonden om eens aan code te beginnen voor het andere probleem. Lijkt me wel vrij ingewikkeld en waarschijnlijk heel tijdrovend. Mocht ik er tijd voor kunnen vrijmaken dan laat ik het ook weten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan