Friedrich Vosberg <
fvos...@me.com> schrieb:
> Martin Kienass <
mar...@makienet.de> wrote:
>
>> Friedrich Vosberg <
fvos...@me.com> schrieb:
>>
>> [...]
>> > A bekommt noch 30 Euro
>> > B zahlt noch 170 Euro
>> > C bekommt noch 80 Euro
>> > D zahlt noch 40 Euro
>> > E zahlt noch 20 Euro
>> > F bekommt noch 110 Euro
>> > G bekommt noch 10 Euro
>> >
>> >
>> > Wie bekomme ich das am effizientesten, also mit so wenig wie nötig
>> > Überweisungen ausgeglichen, und wie bekomme ich das Excel-formelmäßig
>> > ausgerechnet?
>>
>> Da ja jede Person entweder eine Zahlung erhält oder eine empfängt ...
>
> »Erhalten« und »empfangen« ist doch das selbe. ;-) Gemeint ist wohl
> »empfängt« oder »leistet«.
Ja, das war gemeint. War wohl noch etwas früh, heute morgen...
> Bist Du aber sicher, dass jede Person nur
> entweder genau *eine* Zahlung erhält *oder* leistet?
Nein. Meine Behauptung war, man braucht bei sieben Empfängern /
Leistern sieben Überweisungsvorgänge. Dabei war ich davon ausgegangen,
dass "jemand" ein gemeinsames "virtuelles" Konto verwaltet und die
Zahlungsein- und -ausgänge so steuert, dass dieses virtuelle Konto am
Ende aller Transaktionen null Saldo hat.
So würde ich es jedenfalls in der Praxis handhaben. Und ich denke nach
wie vor, dass dies die unkomplizierteste Methode sein müsste, soetwas
abzuwickeln.
> Das kann doch schon
> deshalb nicht richtig sein, weil wie eine ungerade Anzahl an Personen
> haben. Wenn zu Anfang keine Personen einen ausgeglichenen Saldo hat,
> muss zwingend mindestens eine Person an zwei Zahlungsvorgängen beteiligt
> sein, sonst geht's nicht auf. Das kann ich zwar nicht mathematisch
> beweisen, aber es erscheint mir logisch.
>
> Ich versuch's mal per Trial & Error:
>
> B -> 170 -> F
> F -> 60 -> C
> D -> 40 -> A
> E -> 20 -> C
> A -> 30 -> G
>
> F und A erhalten je eine Zahlung *und* leisten je eine Zahlung; C
> empfängt *zwei* Zahlungen Dafür sind B, D, E und G nur an je *einem*
> Zahlungsvorgang beteiligt.
OK, dann habe ich die Aufgabenstellung falsch verstanden. Textaufgaben
waren noch nie meine Stärke.
Ich verstehe zwar immer noch nicht, warum man das so unnötig
kompliziert und unübersichtlich handhaben wollen würde, aber gut, wenn
die Teilnehmer sich untereinander Geld überweisen dürfen (und wollen,
Kontodaten an "wildfremde" Personen herauszugeben muss nicht immer die
beste Idee sein), dann kommt man natürlich mit weniger Überweisungen
aus.
> Das Prinzip des Beispiels ist Folgendes: Es muss zuerst derjenige mit
> den größten Schulden an denjenigen mit den höchsten Aufwendungen zahlen;
> und zwar muss er seine *gesamte* Schuld bezahlen, auch wenn dadurch beim
> Zahlungsempfänger eine Überzahlung eintritt. Diese Prinzip habe ich
> gewählt, weil es mir irgendwie passend erschien, zunächst einmal Geld im
> Verhältnis der größten Differenzen fließen zu lassen.
>
> Nach dieser Zahlung muss nun wiederum derjenige, der *jetzt* die
> höchsten Schulden hat, an denjenigen zahlen, der *jetzt* noch das meiste
> zu bekommen hat; das kann - wie in meinem Beispiel - dazu führen, dass
> der Zahlungsempfänger aus der ersten Runde nun zahlen muss. Usw. usf.
> Aber wie formulieren ich das in Excel, so dass die Zahlungsströme
> automagisch dargestellt werden. Die Formel müsste ja nicht nur
> ermitteln, *wie viel* gezahlt werden muss, sondern auch *an wen*?
Ich glaube nicht, dass Du das Problem mit Formeln effizient erschlagen
können wirst.
Da wird man sich wohl ein VBA-Makro erstellen müssen, dass genau nach
dem von Dir beschriebenen Prinzip vorgeht und die jeweils höchsten Soll-
und Habensalden in einer Schleife solange ausgleicht, bis alle
Teilnehmerkonten auf Null stehen.
Da bin ich allerdings raus, das letzte Mal, dass ich VBA-Makros
geschrieben habe war vor der Jahrtausendwende, mit Excel '97 oder 2000.