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

Rekenen en sorteren (maar hoe ?)

Status
Niet open voor verdere reacties.

TDave

Gebruiker
Lid geworden
1 mrt 2002
Berichten
16
Beste vriend(i)nen,

Ik heb de volgende opgave waar ik niet uitkom:
Ik heb een reeks getallen (27 stuks) met varierende waardes tussen 1 en 62 (dubbele getallen kunnen voorkomen).
Ik wil uit deze reeks zoveel mogelijk combinatie's maken die de waarde van 62 benaderen (hoeft dus niet exact maar zo dicht mogelijk benaderen), waarbij elk getal slecht één keer gebruikt mag worden.

Wie kent hier een formule voor, of liever, met behulp van een macro.
 
Da's een pittege...

Gaat het om combinaties van tekens 2 getalen of mogen combinaties van 3, 4,...,27 getallen ook?

Moet het streven wel zijn om zo veel mogelijk combinaties van 62 te krijgen, ook al is dat er bv maar 1 en de rest ligt er ver van af, of mogen bv 5 combinaties van 63 ook, maar tenkoste van die 1e 62 combinatie, kort om wat moet zwaarder wegen?

Wat vindt je dichtbij 60 en 64 of mogen 52 en 72 ook nog, kortom wat zijn je grenzen, en ten koste van wat?

Is een 'combinatie' van één getal ook geldig?
 
Laatst bewerkt:
62 benaderen met 2 getallen

Sub Benader_62_met_twee_getallen()
Dim rij1, rij2, marge
' marge kan je varieren
marge = 6
For rij1 = 1 To 27
For rij2 = 1 To 27
'als het eerste getal en het tweede getal niet gebruikt zijn en je pakt twee verschillende getallen dan
If Cells(rij1, 2).Value <> "gebruikt" And Cells(rij2, 2).Value <> "gebruikt" And rij1 <> rij2 Then
'als het absolute verschil tussen de getallen combinatie en 62 kleiner is dan de marge dan
If Abs(62 - (Cells(rij1, 1).Value + Cells(rij2, 1).Value)) <= marge Then
'brandmerk getallen
Cells(rij1, 2).Value = "gebruikt"
Cells(rij2, 2).Value = "gebruikt"
'schrijf combinatie weg
Cells(Range("C1000").End(xlUp).Row + 1, 3).Value = "(" & CStr(Cells(rij1, 1).Value) & "," & CStr(Cells(rij2, 1).Value) & ")"
End If
End If
Next rij2
Next rij1
End Sub
 
Nog ietsje duidelijker dan,

De waarde van de opgetelde getallen mag niet hoger worden dan 62 en mag worden samengesteld uit meedere gatalen uit de reeks, met als doel dat er zo min mogelijk samenstellingen ontstaan:

Voorbeeld reeks: 26,15,23,38,8,36,12,41,9,3,19,12,4, enz.

1e combinatie= 41+19=60
2e combinatie= 38+12+12=62
3e combinatie= 36+26=62
4e combinatie= 15+23+3+4+9=54
enz

en dat dit herhalen tot alle getallen in de reeks (één keer) gebruikt zijn.

Ik hoop dat dit duidelijker is dan mijn eerste uitleg.

BvD TDave
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan