Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Excel: 3 bedragen vormen 1 totaalbedrag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedemiddag,

We zitten op het werk met het volgende:

We hebben een lijst van 73 bedragen met bijbehorend klantnummer per bedrag.

Nu komen we op het totaalbedrag een bedrag van 477,33 tekort.
De details van de bedragen zijn helaas niet volledig zodat je alles makkelijk kan filteren.
Het enige dat we weten is dat die 477,33 bestaat uit 3 losse bedragen

Bestaat er in Excel een functie/formule om uit te rekenen hoeveel mogelijke combinaties er zijn om 3 bedragen op 1 bedrag uit te laten komen?

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 00:43

Reptile209

- gers -

Van WisFAQ: Combinatie van r nemen uit n: Crn=(n over r) = n!/r!(n-r)! = 73!/3!*(73-3)! = ongeveer 62196 combinaties. Voor een Engelse Excel is dat =FACT(73)/(FACT(3)*(FACT(73-3)))

Nu bedoelde je ongetwijfeld of Excel de permutaties kan genereren. Geen idee (niet met standaard formules, moet je je eigen macro gaan brouwen), maar ik vraag me ook af of dat handig zou zijn: die lijst krijg je ook op het oog niet makkelijk verwerkt.

Moet de 477,33 van één klant afkomstig zijn? Dan kan je vast de set al verkleinen door alle klanten die minder of meer besteed hebben, uit je lijst te schrappen.

Zo scherp als een voetbal!


Verwijderd

Topicstarter
Dat laatste gaat helaas niet op. En het zijn allemaal negatieve en positieve bedragen door elkaar

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23:42
Schrijf gewoon 3 lussen.

(Effe uitgeprobeerd of dat werkbaar is. ja, binnen 1 seconde. Om niet "#$lig te zijn, hier mijn code)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Option Explicit

Public Sub test()
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
Dim imax As Long
Dim myis As Range
Dim zoekgetal As Double

 Application.Calculation = xlCalculationManual
 
 zoekgetal = 477.33
 imax = 73
 Set myis = ActiveSheet.Range("B1").Resize(rowsize:=imax)
 
 For i1 = 1 To imax
    For i2 = i1 + 1 To imax
       For i3 = i2 + 1 To imax
          If myis.Cells(i1, 1).Value + myis.Cells(i2, 1).Value + myis.Cells(i3, 1).Value = zoekgetal Then
             Debug.Print i1 & " " & i2 & " " & i3
          End If
       Next i3
    Next i2
 Next i1


End Sub

Verwijderd

met een macro kan je enkel de matchende combinaties terugvinden.
Het enige dat we weten is dat die 477,33 bestaat uit 3 losse bedragen
de juiste combinaties kunnen uiteraard enkel gevonden worden als alle bekende bedragen correct zijn.
in een drievoudige lus (733 te doorlopen combinaties) controleer je de opgetelde combinatie op het totaal, zo ja dan plaats je dit in de sheet.