Excel Werte Aus A1 in A2 addieren?
Hallo Vielen Dank für eure Hilfe,
Ich möchte Werte die ich in A1 eingebe , in A2 addieren.
Das heist :
ich gebe heute in A1 10 ein in A 2 erscheint 10
ich gebe morgen in A1 20 ein in A2 erscheint 30
ist das so möglich ?
Wenn das nur mit VBA funktioniert würde ich mich über eine genaue Erklärung freuen.
DANKE IM VORAUS !!!
4 Antworten
Das geht.
Als erstes musst du in den Excel-Optionen im Reiter "Formeln" und dort unter "Berechnungsoptionen" die "Iterative Berechnung" aktivieren. Außerdem musst du dort die "Maximale Iterationszahl" auf 1 stellen (Excel 2007).
Dann gibst du in die Zelle A2 einfach folgende Formel ein:
=A1+A2
Jetzt wird jedes mal, wenn du einen Wert in A1 eingibst, dieser Wert zu A2 hinzuaddiert.
Das gilt natürlich auch für versehentlich falsch eingegebene Werte. Wenn du also eigentlich 5 eingeben wolltest und versehentlich 8 eingegeben hast, musst du hinterher noch mal -3 eingeben, um den Wert zu korrigieren.
Je nachdem, was du mit der Tabelle vorhast, könnte man ja vielleicht auch in Spalte A alle Werte untereinander eintragen und dann in Zelle B1 mit der Formel
=SUMME(A:A)
arbeiten. Dann kann man alle Werte auch im nachhinein jederzeit ändern und muss nicht mit Iteration arbeiten.
Das stimmt. Er müsste dann jedes mal nach Eingabe des Wertes die Zelle A1 gleich wieder löschen.
Ich halte das auch nicht für die optimale Lösung, aber es ging mir auch nur darum, eine Möglichkeit ohne VBA anzubieten.
Die Wege hast Du ja gekriegt, aber sowas ist sehr gefährlich:
Iteration à la Anton A: schaltest du sie aus, ist alles weg.
Makro: Du hast keine Kontrolle darüber, wie oft Du es schon betätigt hast. Fehler sind vorprogrammiert. Spätestens nach einem Urlaub denkst Du nicht mehr daran, dass da was war, wo man aufpassen muss...
Man kann zwar ein Makro schreiben, das eine Formel immer wieder erweitert, so dass dann in A2 steht:
=4+N("am 9.8.")+7+N("am 10.8.")+ usw,
aber das ist umständlich (wenn auch effektiv)
Es ist wirklich besser, in B2 zu schreiben =Summe(A1:A999) und Du kannst sogar per Makro veranlassen, dass die Eingabezelle immer die oberste bleibt (also nach jeder Eingabe oben eine Zelle einfügen, (Rest wird jeweils 1 nach unten geschoben).
Zeichne so eine Aktion im Makrorecorder auf und nimm als Auswerteformel dann =Summe(A;A) (das erfasst dann die ganze Spalte). Ist wesentlich besser, weil nachverfolgbar dokumentiert!!
Sub marine()
[A2] = [A2] + [A1]
End Sub
Die ist uralt und sehr kurz, aber sie berechnet nichts. nur für direkte Adresseingaben. Fast verwunderlich, dass die noch unterstützt wird!
Ja, [A1] scheint eine Alternative zu Range("A1") zu sein.
Das Makro von augsburgchris funktioniert. Es wird richtig gerechnet.
Alternativ packst du in die Tabelle:
Private Sub Change(ByVal Target As Range)
If Target.Address = "$A$1" Then [A2] = [A2] + [A1]
End Sub
Rechnet dann bei jedem Eintrag in A1 den Wert drauf.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then [A2] = [A2] + [A1]
End Sub
Super habe es eingegeben .
Aber warum muss ich jedes mal nach neu eingabe das Makro wieder ausführen ?
Ungetestet:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then _
Range("A2").Value = Range("A2").Value + Target.Value
End Sub
Hab's getestet --> klappt!
Evtl. noch ein
Target.Select
anhängen, aber das ist Kosmetik.
Die Iteration bewirkt jedoch auch das mit jedem Durchrechnen der Tabelle der Wert erneut drauf gerechnet wird. Einmal F9 gedrückt oder woanders was eingegeben und schon hat man den Salat. Das lässt sich über ein Makro vermeiden.