Excel: Automatisches multiplizieren bei Eingabe
Hallo ihr Lieben,
ich möchte für eine von mir erstellte Excel-Tabelle folgendes Ergebnis erzielen:
In einer vorgegebenen Spalte (D14;D27) möchte ich nach und nach verschiedene Zahlen eingeben, die dann automatisch mit 0,10 € (Wert steht zurzeit noch Zelle D13) multipliziert werden sollen.
Wenn ich also zum Beispiel eine 5 eingebe, dann soll in derselben Zelle 0,50 € sofort stehen, ohne das jedes mal "=Zahl*D13" eingeben muss.
Ist das möglich eine leere Zelle dazu zubringen, den neu eingegeben Wert automatisch zu multiplizieren?
4 Antworten
OK, gehe mal bitte mit ALT+F11 in das VBA Modul deiner Tabelle und gebe da folgendes ein:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
Application.EnableEvents = True
End Sub
Bitte deine Felder D13 bis D27 als Währung formatieren und wenn du die Zellen (D14-D27) wieder entfernst kommt in diesen felder automatisch eine 0.
Was anderes habe ich gerade nicht, es hoffe es hilft dir weiter.
Rückmeldung wäre schön :-))
OK, dann nimm diesen mal. Da wird nach der Eingabe in deinem Bereich automatisch die Formatierung von Zelle D13 (Bitte in Buchhaltung formatieren) wieder in den ganzen Bereich automatisch eingefügt.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("E14:E27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("F14:F27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
Range("D13").Select
Selection.Copy
Range("D14:F27").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("D13").Select
Application.EnableEvents = True
End Sub
Als Makro wunderbar, aber sobald Du ein zweites Mal die Zelle aufmachst, wird der Multiplikationsvorgang wiederholt, und Du kannst nicht nachkontrollieren, wie oft schon!
Sehr "gefährlich"!
Ja, das habe ich auch im Hinterkopf. Nur mir ist nichts anderes zu dieser Frage jetzt eingefallen und wie ich die Frage verstanden habe will er ja auch nur alles einmal eingeben. Hast du da noch was in Petto?
So, ich habe das nochmal ein wenig umgebaut. Jetzt kopiert er nach der Eingabe nicht immer erst hin und her sondern ändert nur die auch geänderte Zelle in das Format Buchhaltung.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("E14:E27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("F14:F27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
Dim bereich As Range
Dim zelle As Range
Set bereich = Range("D14:F27")
For Each zelle In bereich
zelle.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Next
Application.EnableEvents = True
End Sub
"in petto": nicht ausgeführt.
Aber ich hab mal mit sowas wie
Activecell.Formula = Activecell.Formula & "``*``" & Faktoradresse
einen variablen Faktor an die Formel /den Wert/ angehängt.
evtl noch "=(" & Teil(Formula) ab 2 & ")*" & Faktoradresse
Hätte jedenfalls den Vorteil, dass man wiederholte Aktionen erkennen kann!
Kannst Du ja aufgreifen, ich häng im Moment an was anderem!
Verdammt noch mal, wie stellt man im neuen Editor jetzt ein * dar?
Wenn du deine Formel meinst, denke ich soweit ich das rausbekommen habe kannst du das nur wenn du deine Formel drin hast die nochmal markierst und dann oben auf Codbeispiel einfügen <> gehst.
Hoffe ich
Gib einfach in einer beliebigen Zelle eine fünf ein. In Deiner Zelle gibst Du diese Zelle als Multiplikator an. Die Zielzelle formatierst Du mit der entsprechenden Einheit. Jede Eingabe in Deine Zelle wird mit 5 multipliziert.
Ich möchte nicht ständig die Formel "=Zahl*D13" eingeben.. das mache ich zurzeit und es ist einfach lästig immer das gleiche eingeben zu müssen, nur mir einer anderen Zahl.
Denke du brauchst drei Zellen. Ein Zielzelle und zwei Zellen die in der Zielzelle als Summe erscheinen. In eine gibst Du z.B. die 5 ein , in die zweite den zu multiplizierenden Wert. D14= Summe(D13*D12)
So brauchst du nur den Wert in D13 einzugeben in D12 den Multiplikator und in D14 erscheint das Ergebnis.
Weiter habe ich nicht in die Tiefen der Exel-Berechnung reingeschaut. ;o)
Du kannst die beiden Zellen die berechnet werden mit der entsprechenden Schriftfarbe = Zellenfarbe unsichtbar machen. natürlich brauchst Du dann bei Querrechnung fünf Spalten.
D14=Summe(F14F16) (0,1x5)
E14=Summe(F15F16) (0,2x5)
Die umliegenden Zellen sind bereits durch andere Dinge belegt.. :-/
Wenn ich es wirklich durch Formeln lösen muss, werde ich ein neues Tabellenblatt mit den entsprechenden Werten anlegen und mich in der eigentlichen Tabelle in das "unsichtbare" Tabellenblatt beziehen.
Ich weiß nicht, ob das mit einem Makro geht. Ich an deiner Stelle würde eine neue Spalte E einfügen. In die Zelle E14 gibst du dann ein =D14*0,1.
Dann markierst du die Spalte E und gibst bei Format Währung an mit 2 Stellen hinterm Komma und dem Eurozeichen. Fertig.
Die Formel kannst du dann an der rechten unteren Ecke von Zelle E14 nach unten ziehen. Also bis E27.
Dann kannst du deine Werte in Spalte D eingeben und sie werden in Spalte E automatisch in dein gewünschtes Format mit dem gewünschten Wert eingetragen.
Die Werte sollen in Spalte D stehen! In Spalte E soll das Ganze nämlich mit 0,20 € geschehen.
Es geht um die Erstellung einer Abrechnung, die für den Kunden ausgedruckt werden soll und darauf sind Hilfstabellen nicht gerade praktisch..
Geh auf Office (oben links), Excel-Optionen, Erweitert.
Dort einen Haken setzen bei "Dezimalkomma automatisch einfügen" und die Anzahl der Stellen auf 1 setzen, OK
Dann wird aus einer eingegebenen 8 eine 0,8. Es wirkt sich allerdings auf die gesamte Tabelle aus.
Ich brauche es leider nicht für die ganze Tabelle.. daher unpraktikabel.
Das klappt und ich habe das Ganze noch für Spalte E und F erweitert:
*Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("D13")
If Not Intersect(Target, Range("E14:E27")) Is Nothing Then Target = Target * ActiveSheet.Range("E13")
If Not Intersect(Target, Range("F14:F27")) Is Nothing Then Target = Target * ActiveSheet.Range("F13")
Application.EnableEvents = True
End Sub*
Wenn ich allerdings in die entsprechenden Zellen eine Zahl eingebe und das Ergebnis ausgegeben wird, zerschießt sich die Formatierung "Buchhaltung". Diese wird ja generell eigentlich rechtsbündig ausgegeben, nun erfolgt die Ausgabe undefinierbar - irgendwas zwischen linksbündig und zentriert.. wenn ich dann erneut die Formatierung "Buchhaltung" darüberlege, steht es wie gewohnt rechtsbündig.
Vielen Dank!