Excel: Automatisches multiplizieren bei Eingabe

...komplette Frage anzeigen

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 :-))

sheep92 05.03.2015, 20:45

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!

0
schmiddi1967 05.03.2015, 21:13
@sheep92

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
1
Iamiam 05.03.2015, 22:50
@schmiddi1967

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"!

1
schmiddi1967 05.03.2015, 22:54
@Iamiam

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?

0
schmiddi1967 06.03.2015, 08:20
@sheep92

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
0
Iamiam 06.03.2015, 11:54
@schmiddi1967

"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?

0
schmiddi1967 06.03.2015, 12:11
@Iamiam

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

0

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.

sheep92 05.03.2015, 20:24

Ich brauche es leider nicht für die ganze Tabelle.. daher unpraktikabel.

0
Iamiam 05.03.2015, 22:48
@sheep92

eine teuflische Option, wenn man da mal nicht drandenkt!

0

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.


sheep92 05.03.2015, 12:42

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..

0
Takezo 05.03.2015, 12:44
@sheep92

Dann erstelle die Hilfsspalte (also das, was du momentan in Spalte D schreiben willst) doch in einem neuen Tabellenblatt. Dann sieht man die auch nicht auf dem Ausdruck.

0
sheep92 05.03.2015, 12:54
@Takezo

Wenn es nicht möglich ist eine leere Zelle dazu zubringen, den neu eingegeben Wert automatisch zu multiplizieren, wird mir leider nichts anderes über bleiben.

0
Takezo 05.03.2015, 14:19
@sheep92

Wahrscheinlich ist es mit VBA möglich. Damit kenne ich mich aber leider nicht aus. Vielleicht meldet sich ja noch jemand, der das kann.

0
Iamiam 05.03.2015, 22:46
@Takezo

ja, andere Vorgehensweisen sind "gefährlich" (siehe Kommentar zu Schmiddi !

0

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.

frageloch 05.03.2015, 12:40

Sorry, mein Tip war wohl nix, funzt nicht.

0
sheep92 05.03.2015, 12:43
@frageloch

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.

0
frageloch 05.03.2015, 12:56
@sheep92

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)

0
frageloch 05.03.2015, 13:30
@frageloch

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)

0
sheep92 05.03.2015, 20:27
@frageloch

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.

0
Iamiam 05.03.2015, 22:44
@sheep92

Da die Optionen der beiden anderen Antworten sehr "gefährlich" sind, halte ich dieses Vorgehen für das beste! 

"gefährlich" siehe Kommentare zu den Antworten!

0

Was möchtest Du wissen?