Supportnet / Forum / Tabellenkalkulation
Warenbestände fortschreiben
Frage
Hi, mit Excel stehe ich nicht auf Kriegsfuss aber dies hier hat es entweder in sich oder ich stehe auf dem Schlauch. Tabellenaufbau ist folgender. Anfangsbestand, Zugang und Abgänge und aktueller Bestand. Dabei sollen in den Zu- und Abgängen immer nur eine Zahl eingetragen werden, und hier ist das Problem. Z.B. Anfangsbestand 100. Entnahme 10. Ergibt 90. Wenn ich nun z.b. 5 entnehme geht mir die 10 verloren weil ich sie lösche.
Weiß jemand Rat?
Danke
Antwort 1 von Saarbauer
Hallo,
vom Grundsatz her verstanden.
Du kannst nicht in die gleiche Zelle unerschiedliche Werte schreiben, da immer nur ein wert in der Zelle stehen kann.
Du musst die Veränderungen im Bestand immer in eine neue Zelle schreiben. So z.B.
Zeile 1 Überschriften
In Zelle D2 Anfangsbestand
in Zelle B3 Zugang
in Zelle C3 Abgang
daraus ergibt sich für D3 =D2+B3-C3
und dies nach unten ziehen
In Spalte A steht das Datum
Gruß
Helmut
vom Grundsatz her verstanden.
Du kannst nicht in die gleiche Zelle unerschiedliche Werte schreiben, da immer nur ein wert in der Zelle stehen kann.
Du musst die Veränderungen im Bestand immer in eine neue Zelle schreiben. So z.B.
Zeile 1 Überschriften
In Zelle D2 Anfangsbestand
in Zelle B3 Zugang
in Zelle C3 Abgang
daraus ergibt sich für D3 =D2+B3-C3
und dies nach unten ziehen
In Spalte A steht das Datum
Gruß
Helmut
Antwort 2 von Anjafragtgerne
Ja das dachte ich mir schon, aber sieht irgendwie nicht so aus, wie ich es gerne hätte ;-) danke für den Tip!
Antwort 3 von wim
Hallo,
darueber hab ich auch schon nachgedacht.
Meine Loesung:
in Spalte A steht der Bestand in Spalte B die Formel
=-3+10-4-5
Formel in Spalte C =a1-b1
eleganter ueber ein Makro zu loesen, welches ueber
eine Schaltflaeche anbietet einen Zu- oder Abgang zu buchen
und nach erfolgtem Eintrag die Formel in B1 neu generiert.
Gruss
wim
darueber hab ich auch schon nachgedacht.
Meine Loesung:
in Spalte A steht der Bestand in Spalte B die Formel
=-3+10-4-5
Formel in Spalte C =a1-b1
eleganter ueber ein Makro zu loesen, welches ueber
eine Schaltflaeche anbietet einen Zu- oder Abgang zu buchen
und nach erfolgtem Eintrag die Formel in B1 neu generiert.
Gruss
wim
Antwort 4 von coros
Hallo Anjafragtgerne,
von mir kommt eine VBA Lösung. Da Du leider nicht geschrieben hast, in welchen Spalten sich Deine Bestände befinden, müssen wir uns hier alle Spalten überlegen. Ich habe mich für folgende entschieden:
Spalte A = Warenbezeichnung
Spalte B = Waren-Anfangsbestand
Spalte C = Waren- Zugabe
Spalte D = Waren-Entnahme
Spalte E = Waren-Gesamtbestand
Wenn Deine Tabelle so aussehen sollte, wovon ich mal nicht ausgehe, da gehört folgender VBA- Code in das VBA- Projekt des Tabellenblattes, in dem die Warenbestandsberechnung durchgeführt werden soll.
Hier wird je nach dem, in welcher Spalte eine Zahl geändert wird, der Bestand in Spalte E neu berechnet. Wenn Du das für Deine Datei übernehmen möchtest, die Daten aber in anderen Spalten stehen, musst Du überall dort, wo Zahlen stehen, die richtige Spaltenindexzahl eintragen. Die Spalte A hat hierbei die Spaltenindexzahl 1, die Spalte B die Zahl 2, die Spalte C die Zahl 3 usw. bis zur Spalte IV mit der Zahl 256. Mal an einer Codezeile aus obigen Code erklärt: Mit der Zeile
wird der Bestand in Spalte E (Zahl 5) neu berechnet, wenn in Spalte D (Zahl 4) eine Veränderung eintritt. Die Target.Column- Eigenschaft sagt hier nur die Zeile der Änderung aus. Du möchtest nun, dass z.B. bei Entnahme, das bei Dir in Spalte F eingetragen wird, der Bestand, der z.B. in Spalte I steht, neu berechnet wird. Dann würde die Codezeile folgendermaßen lauten:
Wie Du siehst, haben sich die Zahlen geändert. Anstelle der Zahl 4 für Spalte D steht doret nun die Zahl 6 für Spalte F und anstelle der Zahl 5 für Spalte E steht dort nun die Zahl 9 für Spalte I.
Ich hoffe, Du hast das verstanden und dass Du klar kommst Bei Fragen melde Dich bitte wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
von mir kommt eine VBA Lösung. Da Du leider nicht geschrieben hast, in welchen Spalten sich Deine Bestände befinden, müssen wir uns hier alle Spalten überlegen. Ich habe mich für folgende entschieden:
Spalte A = Warenbezeichnung
Spalte B = Waren-Anfangsbestand
Spalte C = Waren- Zugabe
Spalte D = Waren-Entnahme
Spalte E = Waren-Gesamtbestand
Wenn Deine Tabelle so aussehen sollte, wovon ich mal nicht ausgehe, da gehört folgender VBA- Code in das VBA- Projekt des Tabellenblattes, in dem die Warenbestandsberechnung durchgeführt werden soll.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
Rem: Wenn Warenanfangsbestand geändert wird, aktuellen Bestand neu berechnen
If Target.Column = 2 Then _
Cells(Target.Row, 5) = Cells(Target.Row, 2) + Cells(Target.Row, 5)
Rem: Wenn Warenzugang geändert wird, aktuellen Bestand neu berechnen
If Target.Column = 3 Then _
Cells(Target.Row, 5) = Cells(Target.Row, 3) + Cells(Target.Row, 5)
Rem: Wenn Warenentnahme geändert wird, aktuellen Bestand neu berechnen
If Target.Column = 4 Then _
Cells(Target.Row, 5) = Cells(Target.Row, 5) - Cells(Target.Row, 4)
Application.EnableEvents = True
End SubHier wird je nach dem, in welcher Spalte eine Zahl geändert wird, der Bestand in Spalte E neu berechnet. Wenn Du das für Deine Datei übernehmen möchtest, die Daten aber in anderen Spalten stehen, musst Du überall dort, wo Zahlen stehen, die richtige Spaltenindexzahl eintragen. Die Spalte A hat hierbei die Spaltenindexzahl 1, die Spalte B die Zahl 2, die Spalte C die Zahl 3 usw. bis zur Spalte IV mit der Zahl 256. Mal an einer Codezeile aus obigen Code erklärt: Mit der Zeile
Rem: Wenn Warenentnahme geändert wird, aktuellen Bestand neu berechnen
If Target.Column = 4 Then _
Cells(Target.Row, 5) = Cells(Target.Row, 5) - Cells(Target.Row, 4)wird der Bestand in Spalte E (Zahl 5) neu berechnet, wenn in Spalte D (Zahl 4) eine Veränderung eintritt. Die Target.Column- Eigenschaft sagt hier nur die Zeile der Änderung aus. Du möchtest nun, dass z.B. bei Entnahme, das bei Dir in Spalte F eingetragen wird, der Bestand, der z.B. in Spalte I steht, neu berechnet wird. Dann würde die Codezeile folgendermaßen lauten:
Rem: Wenn Warenentnahme geändert wird, aktuellen Bestand neu berechnen
If Target.Column = 6Then _
Cells(Target.Row, 9) = Cells(Target.Row, 9) - Cells(Target.Row, 6)Wie Du siehst, haben sich die Zahlen geändert. Anstelle der Zahl 4 für Spalte D steht doret nun die Zahl 6 für Spalte F und anstelle der Zahl 5 für Spalte E steht dort nun die Zahl 9 für Spalte I.
Ich hoffe, Du hast das verstanden und dass Du klar kommst Bei Fragen melde Dich bitte wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von karinka
Hallo,
Zelle A1 --->Anfangsbestand (manuell eintragen)
Zelle B1 --->Zugang (manuell eintragen)
Zelle C1 --->Abgang (manuell eintragen)
Zelle D1 --->aktueller Bestand (automatischer Eintrag)
Zelleninhalt D1 = Excel-Formel
=WENN($B1&$C1="";"";WENN($B1>0;$A1+$B1-$C1;
WENN($C1>0;$A1+$B1-C1)))
Zelle D2 ---> aktueller Bestand (automatisch)
Zelleninhalt D2 = Excel-Formel
=WENN($B2&$C2="";"";WENN($B2>0;$D1+$B2-$C2;
WENN($C2>0;$D1+$B2-C2)))
die Zelle D2 weiter nach unten kopieren
(in D3...D4...D5...usw.)
Gruss
karinka
Zelle A1 --->Anfangsbestand (manuell eintragen)
Zelle B1 --->Zugang (manuell eintragen)
Zelle C1 --->Abgang (manuell eintragen)
Zelle D1 --->aktueller Bestand (automatischer Eintrag)
Zelleninhalt D1 = Excel-Formel
=WENN($B1&$C1="";"";WENN($B1>0;$A1+$B1-$C1;
WENN($C1>0;$A1+$B1-C1)))
Zelle D2 ---> aktueller Bestand (automatisch)
Zelleninhalt D2 = Excel-Formel
=WENN($B2&$C2="";"";WENN($B2>0;$D1+$B2-$C2;
WENN($C2>0;$D1+$B2-C2)))
die Zelle D2 weiter nach unten kopieren
(in D3...D4...D5...usw.)
Gruss
karinka

