Office - Word, Excel und Co. 9.703 Themen, 40.813 Beiträge

Gewinne bedingt verteilen

FC-Fan / 1 Antworten / Flachansicht Nickles

Hallo zusammen! Ich bin neu hier und hoffe auf Hilfe. Ich habe eine Exceltabelle in der z.B. in der Zelle A1 "1." drin steht. Je nach Werten in der Tabelle steht in Zelle A2 "2." oder sie ist leer (d.h. ebenfalls "1.". In der Zelle A3 steht je nach Tabellenwerte "3." oder sie ist auch leer. Dies setzt sich fort bis A14.


Ich habe fünf Geldpreise zu vergeben. 120;60;45;30;25. Wenn A1 also als einzigster "1." soll von mir aus in B1 "120" eingetragen werden. Wenn aber A2 leer ist, soll in B1 und in B2 120+60/2 also 90 eingetragen werden. Es sind also fünf Preise aber im schlimmsten Fall 14 Gewinner, die sich die Gesamtgewinnsumme entsprechend der Platzierung (1.;2.;etc ) aufteilen.


Wer kann mir helfen? Im Idealfall mit einer Formel, da ich in Makros erheblichen Nachholbedarf habe. Ich wäre aber auch für ein Makro sehr dankbar.


Gruß und Danke, FC-Fan


 

bei Antwort benachrichtigen
Uli M FC-Fan „Gewinne bedingt verteilen“
Optionen

Hallo FC-Fan,

Ich zweifle, ob dies mit einer Formel möglich ist - wenn, so müsste sie schon ziemlich kompliziert sein.
Folgende Nachfragen für einen Makro-Ansatz:
Eine leere Zelle ("") bedeutet also, dass der gleiche Rang wie darüber gemeint ist (wobei A1 auf jeden Fall "1." haben muss. Oder kann es auch sein, dass z.B. der 9. nichts mehr bekommt?
Die Ränge sind dann wohl auch aufsteigend sortiert?
Es gibt max. einen 5. Rang und jeder wird durch die Anzahl geteilt?

Nur mit diesen Annahmen sollte folgendes funktionieren:

Sub Gewinnberechnung()
Dim iRang As Integer
Dim iTeiler As Integer
Dim aGewinne(4) ' As Currency?
Dim I As Integer
Dim J As Integer

aGewinne(0) = 120
aGewinne(1) = 60
aGewinne(2) = 45
aGewinne(3) = 30
aGewinne(4) = 25
For I = 2 To 14
If Cells(I, 1) = "" Then
iTeiler = iTeiler + 1
Else
If iRang = 0 Then
iTeiler = iTeiler + 1
Cells(1, 2) = aGewinne(iRang) / iTeiler
End If
For J = iTeiler To 1 Step -1
Cells(I, 2).Offset(-J).Value = aGewinne(iRang) / iTeiler
Next J
iRang = iRang + 1
iTeiler = 1
End If
Next I
For J = iTeiler To 1 Step -1
Cells(I, 2).Offset(-J).Value = aGewinne(iRang) / iTeiler
Next J
End Sub

bei Antwort benachrichtigen