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

Alle mogelijke getallen bestaande uit XXX unieke cijfers

Status
Niet open voor verdere reacties.

Renee123

Gebruiker
Lid geworden
8 feb 2009
Berichten
65
Ik zou graag Excel, bijv. via een macro of VBA, een overzicht willen laten genereren van alle mogelijke getallen. Daarbij geldt de voorwaarde dat het getal bestaat uit de cijfers 0 t/m XXX en elk cijfer mag maar 1x voorkomen.

Dus stel XXX is 1, dan zijn "alle" mogelijke opties 01 en 10 (aantal mogelijkheden is 2 faculteit).

Als XXX is 2, dan zijn de opties 012, 021, 102, 120, 201 en 210 (3 faculteit).

Voor deze voorbeelden is het sneller om het handmatig even uit te werken. Maar nou wil ik er naar toe dat XXX bijvoorbeeld 6 of 8 is. Dat maakt het aantal mogelijkheden al te veel om het even snel zelf op te stellen.

Heeft iemand een slim idee hoe ik dit met behulp van Excel kan doen?
 
Renee, wat ga je er mee doen?
hier een oud knutseltje van mij.
het is een afbeelding van de natuurlijke getallen op de permutaties van de letters in een string.
als je 0 in geeft geeft de function het aantal permutaties terug.
 

Bijlagen

  • permutaties 7.xlsm
    18,7 KB · Weergaven: 52
Laatst bewerkt:
interessant, stuur eens een voorbeeldje met hoe het er uit moet gaan zien. (en eventueel ook wat er verder mee gebeurt)
 
Als de getallen uit de cijfers 0 en 1 moeten bestaan is dit de uitkomst:
01
10

Als de getallen uit de cijfers 0, 1 en 2 moeten bestaan is dit de uitkomst:
012
021
102
120
201
210


Als de getallen uit de cijfers 0, 1, 2 en 3 moeten bestaan is dit de uitkomst:
0123
0132
0213
0231
0312
0321
1023
1032
1203
1230
1302
1320
2013
2031
2103
2130
2301
2310
3012
3021
3102
3120
3201
3210

etc etc.

Alle mogelijke getallen met de cijfers "0 en 1" en met "0, 1 en 2" zijn snel zelf op te stellen (zie hierboven). De uitkomsten met de cijfers "0, 1, 2 en 3" is al wat meer werk, maar kan je redelijk snel doen.
Uiteindelijk moet ik er misschien naar toe om alle mogelijke getallen met de cijfers "0, 1, 2, 3, 4, 5, 6, 7, 8, 9" te laten genereren. En die 3,6 miljoen (10 faculteit) mogelijkheden ga ik niet met de hand in zitten kloppen ;)

De berekening die daarna volgt is niet spannend... Ik heb gewoon unieke getallen nodig waarbij elk cijfer maar 1x gebruikt mag worden ;)
 
stuur liever een excel bestandje
of voldoet mijn bestandje ook
 
Laatst bewerkt:
hier een mogelijkheid:
 

Bijlagen

  • van N naar Permutaties 1.xlsm
    17,5 KB · Weergaven: 61
Laatst bewerkt door een moderator:
Of zo:

Code:
Sub M_snb()
   For j = 123 To 3210
      c00 = Format(j, "0000")
      If InStr(c00, "0") + InStr(c00, "1") + InStr(c00, "2") + InStr(c00, 3) = 10 Then c01 = c01 & vbLf & c00
   Next
   
   MsgBox c01
End Sub
 
Iets algemener:

n is het aantal gewenste elementen

Code:
Sub M_snb()
    ReDim sp(10 ^ 6, 0)
    t00 = "0123456789"
    
    n = 4
    
    For j = Left(t00, n) To StrReverse(Left(t00, n))
      sp(y, 0) = Format(j, String(n, "0"))
      For jj = 0 To n - 1
        If InStr(sp(y, 0), jj) = 0 Then Exit For
      Next
      If jj = n Then y = y + 1
    Next
    
    Cells(1).Resize(UBound(sp)) = sp
End Sub
 
snb , ik heb hem met n = 9 getest : dat duurt wel een paar koppen koffie



na de koffie heb ik hen afgebroken.
 
Laatst bewerkt:
Ja, maar je weet natuurlijk ook wel om hoeveel elementen het gaat .....
 
ja dat klop, maar als je een subje om mijn function bouwt gaat het veel sneller: zie voorbeeld

ps ik zie dat hij de laatste permutatie niet doet maar dat mag de pret niet drukken.
 

Bijlagen

  • van N naar Permutaties 3.xlsm
    20,4 KB · Weergaven: 42
Laatst bewerkt:
Code:
    Cells(1).Resize(UBound(Opl) + 1) = Opl
:d:d:d
 
Hierbij nog een uitwerking op basis van een ander algoritme:
 

Bijlagen

  • permutaties_rebmog.xlsm
    18,1 KB · Weergaven: 51
@Rebmog

Pfff, gaat erg snel; moet ik nog even op kauwen :thumb::thumb:
 
@rebmog,

Ik heb het bestandje ook eens geprobeerd.
Als je de tien cijfers wil gebruiken, loopt het vast.
Ik denk dat de kolom niet lang genoeg is, met 9 cijfers is er geen probleem.

Is het mogelijk om het vullen van de cellen over meerdere kolommen te verdelen?

Ik heb wel wat zitten proberen maar ben er niet ingeslagen. (Te weinig verstand ervan)
Bij 9 word het cijfer 9 niet gebruikt.

Alvast hartelijk bedankt.
 
De beperking was inderdaad het aantal rijen van Excel. Ik heb het voorbeeldje uitgebreid, zodat deze ook met 10 verschillende cijfers om kan gaan. Dit duurt wel een paar seconden omdat het gaat om meer dan 3,5 miljoen permutaties. Deze getallen worden over verschillende kolommen verdeeld.
 

Bijlagen

  • permutaties_rebmog_v2.xlsm
    20,4 KB · Weergaven: 50
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan