Delen via

Weet iemand een methode (excel of vba) om permutaties uit te schrijven__

Anoniem
2010-07-28T14:36:17+00:00

Stel ik heb 2 kolommen a en b

in elk kolom zijn waarden ingevuld, bv kolom a heeft in cellen a2 t/m a4 de waarde 1 t/3

kolom b heeft in cellen b2 t/m b4 de waarde 10 t/13

Het aantal mogelijke variaties dat met deze 2 kolommen kan worden gelegd is: 3 * 3 = 9

Nu wil ik al de mogelijke variaties uitgeschreven hebben.

Het resultaat moet derhalve zijn

1-13

1-14

1-15

2-13

2-14

2-15

3-13

3-14

3-15

Tot zover is dit is niet moelijk. Maar ik wil het mechanisme dynamisch maken. Dat wil zeggen het moet mogelijk zijn om kolommen waarmee variaties mee moeten worden gemaakt toe te voegen (of te verwijderen)

In dit voorbeeld kan dus een kolom C bijkomen met mogelijke waarden 23 en 24

Het totaal aantal variaties wordt hiermee 3*3*2=18. Deze 18 mogelijke variaties moeten worden uitgeschreven.

 Dus, ik zie elk kolom als een kolommatrix. Het aantal mogelijke variaties is derhalve het produkt van de kolommatrixes

Echter, ik weet van te voren niet hoeveel kolommatrixes hiervoor moeten worden gebruikt. de vba code moet met deze dynamiek om kunnen gaan. Daarnaast is het heel goed mogelijk dat het de uitkomst van het produkt van de kolommatrixes > 1000.000

Het vervolg resultaat moet om die reden in een nieuw werkblad worden opgemaakt waarbij de nummering doorloopt.

Alvast bedankt.

Johnny

Microsoft 365 en Office | Excel | Voor thuisgebruik | Windows

Vergrendelde vraag. Deze vraag is gemigreerd vanuit de Microsoft Ondersteuning-community. U kunt met een stem aangeven of de inhoud nuttig is, maar u kunt geen opmerkingen of antwoorden toevoegen of de vraag volgen.

0 opmerkingen Geen opmerkingen

Antwoord geaccepteerd door vraagauteur

  1. Anoniem
    2010-08-02T07:28:24+00:00

    Johnny,

    Juist doordat er geen relaties worden gelegd tussen de vreschillende tabellen (elke kolom wordt als tabel gezien) worden alle mogelijke combinaties teruggegeven.

    In mijn voorstel is niet voorzien in teveel gegevens (combinaties) voor 1 werkblad, maar dat is wellicht d.m.v. VBA op te lossen.

    Jan

    Was dit antwoord nuttig?

    0 opmerkingen Geen opmerkingen

Antwoord geaccepteerd door vraagauteur

  1. Anoniem
    2010-08-01T08:15:35+00:00

    Hallo Jan,

    Bedankt voor je aanwijzing.

    Kijkend naar het voorbeeld die je geeft lijkt het mij dat er geen combinaties worden gelegd tussen de kolommen maar dat de kolomwaarden worden uitgelezen.

    Maar de methode geeft zodanig voldoende houvast dat ik dit ga uitproberen. 

    Mvg,

    Johnny

    Was dit antwoord nuttig?

    0 opmerkingen Geen opmerkingen

1 extra antwoord

Sorteren op: Meest nuttig
  1. Anoniem
    2010-07-29T09:24:41+00:00

    Johnny,

    Het eenvoudigst zou je het door Access kunnen laten doen m.b.v. een query.

    Maar ook in Excel is er een gelijkssortige oplossing mogelijk.

    Zeg je gegevens staan in Blad1.

    Kolomkoppen aap en noot met daaronder de gegevens.

    Dan kun je op een ander blad Gegevens importeren waarbij je als gegevensbron het eigen werkblad gebruikt (of je doe het in een tweede bestand met een verwijzing naar het bestand met de gegevens)

    Kies als Type Opdracht: SQL

    Met als opdrachttekst:

    Select k1.aap,k2.noot From [Blad1$] as k1, [Blad1$] as k2 WHERE k1.aap<>Null AND k2.noot<>Null ORDER BY k1.aap,k2.noot

    Je ziet dan de gegevens zoals je ze wenst (voor 2 kolommen)

    Als je de gegevens in de kolommen wijzigt, dan zul je de gegevens in de query moeten vernieuwen.

    Als je het aantal kolommen wijzigt zul je de query moeten verwijderen en een nieuwe aan moeten maken.

    Met drie kolommen wordt de SQL:

    Select k1.aap,k2.noot,k3.mies From [Blad1$] as k1, [Blad1$] as k2, [Blad1$] as k3 WHERE k1.aap<>Null AND k2.noot<>Null AND k3.mies<>Null ORDER BY k1.aap,k2.noot,k3.mies

    en met vier kolommen: 

    Select k1.aap,k2.noot,k3.mies,k4.wim From [Blad1$] as k1, [Blad1$] as k2, [Blad1$] as k3 , [Blad1$] as k4 WHERE k1.aap<>Null AND k2.noot<>Null AND k3.mies<>Null AND k4.wim <>Null ORDER BY k1.aap,k2.noot,k3.mies,k4.wim

    Dit moet allemaal via VBA te regelen zijn.

    Jan

    Was dit antwoord nuttig?

    0 opmerkingen Geen opmerkingen