AW: FIFO Bewertungsmethode mit Excel
25.07.2006 19:12:01
fcs
hallo Jona,
eine Lösung mit Excel-Standard-Formeln kenne ich nicht. Ich kann dir eine benutzedefinierte Funktion anbieten, die die Eingabedaten auswertet.
Code der Funktion in eine Modul der Datei kopieren.
Formel in Tabelle ist dann:
=Buchwert(B2:D8)
gruss Franz
Function Buchwert(Daten As Range) As Double
'Daten ist der 3-spaltige Bereich mit den Ausgangsdaten
'1. Spalte: Menge Abgang/Verbrauch
'2. Spalte: Menge Zugang
'3. Spalte: Stück-/Einzelpreis der jeweilgen Zugangsmenge
Dim Abgang() As Double, Zugang() As Double, Preis() As Double, I As Integer, J As Integer
Dim ZeileZugang As Integer, LetzterZugang As Double, LetzterPreis As Double, SummeAbgang As Double
ReDim Abgang(1 To Daten.Rows.Count)
ReDim Zugang(1 To Daten.Rows.Count)
ReDim Preis(1 To Daten.Rows.Count)
'Zuordnung der Daten zu den 3 Feldern
For I = 1 To Daten.Rows.Count
Abgang(I) = Daten(I, 1)
Zugang(I) = Daten(I, 2)
Preis(I) = Daten(I, 3)
Next I
ZeileZugang = 1 '1. Zeile muss immer einen Zugang und Stückpreis enthalten
LetzterZugang = Zugang(ZeileZugang)
LetzterPreis = Preis(ZeileZugang)
SummeAbgang = 0 'Zwischensummierung für die Abgänge
For I = 1 To Daten.Rows.Count
SummeAbgang = SummeAbgang + Abgang(I)
If SummeAbgang <= LetzterZugang Then
'Abgang verrechnen
Buchwert = Buchwert - Abgang(I) * LetzterPreis
' Zugang verechnen
Buchwert = Buchwert + Zugang(I) * Preis(I)
Else
'Restmenge aus letztem Zugang verrechnen
Buchwert = Buchwert - (LetzterZugang - (SummeAbgang - Abgang(I))) * LetzterPreis
' Zugang verechnen
Buchwert = Buchwert + Zugang(I) * Preis(I)
'Restmenge aus Abgang als neue Zwischensumme für Abgang ermitteln
SummeAbgang = SummeAbgang - LetzterZugang
' Nächsten nicht verbrauchten Zugang ermitteln und gegen Restmenge verrechnen
For J = ZeileZugang + 1 To I
If Zugang(J) > 0 Then
LetzterZugang = Zugang(J)
LetzterPreis = Preis(J)
ZeileZugang = J
If SummeAbgang > LetzterZugang Then
Buchwert = Buchwert - LetzterZugang * LetzterPreis
SummeAbgang = SummeAbgang - LetzterZugang 'Restmenge aus Abgang
Else
Buchwert = Buchwert - SummeAbgang * LetzterPreis
Exit For
End If
End If
Next J
End If
Next I
End Function