AW: Poker Tabelle
24.10.2006 14:12:39
Reinhard
Hi Mike,
habe keinPda, k.A. was da geht oder nicht.
Spalte D wird erzeugt wenn man den Code laufen läßt.
Tabellenblattname: Tabelle1
A B C D
1 Spieler1 -0,5 Spieler1 zahlt an Spieler2 0,5
2 Spieler2 0,5 Spieler5 zahlt an Spieler3 0,5
3 Spieler3 0,5 Spieler5 zahlt an Spieler4 2
4 Spieler4 2
5 Spieler5 -2,5
Benutzte Formeln:
A1: ="Spieler"&ZEILE()
A2: ="Spieler"&ZEILE()
A3: ="Spieler"&ZEILE()
A4: ="Spieler"&ZEILE()
A5: ="Spieler"&ZEILE()
Option Explicit
Option Base 1
Sub tt()
Dim Zei As Long, Summe, Spieler, n As Long, nn As Long, pos As Long
Zei = Range("B65536").End(xlUp).Row
Summe = Application.WorksheetFunction.Sum(Range("B1:B" & Zei))
If Summe <> 0 Then
MsgBox "Fehler, die Summe von B muss 0 sein, sie eträgt aber " & Summe
Exit Sub
End If
Columns(4).ClearContents
ReDim Spieler(Zei, 2)
For n = 1 To Zei
Spieler(n, 1) = Cells(n, 1)
Spieler(n, 2) = Cells(n, 2)
Next n
For n = 1 To Zei
If Spieler(n, 2) < 0 Then
For nn = 1 To Zei
If Spieler(nn, 2) > 0 Then
pos = pos + 1
If Spieler(nn, 2) >= Abs(Spieler(n, 2)) Then
Range("D" & pos) = Spieler(n, 1) & " zahlt an " & Spieler(nn, 1) & " " & Abs(Spieler(nn, 2))
Spieler(nn, 2) = Spieler(nn, 2) - Abs(Spieler(n, 2))
Spieler(n, 2) = 0
Exit For
Else 'sp2 hat weniger zu kriegen als sp1 hat
Range("D" & pos) = Spieler(n, 1) & " zahlt an " & Spieler(nn, 1) & " " & Abs(Spieler(nn, 2))
Spieler(nn, 2) = 0
Spieler(n, 2) = Spieler(n, 2) + Spieler(nn, 2)
End If
End If
Next nn
End If
Next n
Columns(4).AutoFit
End Sub
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..