Wie erstelle ich in Excel eine Formelvorlage für eine einfache Tabelle mit mehreren Spalten?

...komplette Frage anzeigen

2 Antworten

In einer Zelle kann nur ein Wert eingegeben oder berechnet werden. Das heißt, du kannst in einer Zelle nicht den Multiplikator (hier 9) hinterlegen, einen Wert eingeben (hier 2) und final in der Zelle das Ergebnis der Multiplikation (hier 18) angezeigt bekommen. Wie würdest du den Multiplikator pflegen wollen und wie soll Excel zwischen Eingabe und Berechnung unterscheiden können.

Was wohl möglich wäre, ist den Multiplikator in einer VBA Funktion nach einem Change-Event mit einer Eingabe zu verrechnen. Hierbei muss kurzzeitig die Ereignisbehandlung außer Kraft gesetzt werden, weil sonst eine Endlosschleife entstünde.

Ich empfehle allerdings, in Excel eine Tabelle mit den Multiplikatoren anzulegen, eine mit den Eingaben und eine mit dem Ergebnis, also den Berechnungsformeln.
Willst du die Multiplikation manuell anstoßen, kannst du durch Kopieren der Multiplikatoren und Einfügen → Inhalte einfügen... → Multiplizieren die Multiplikatoren mit den Eingaben verrechnen lassen. (siehe Bild)

Inhalte multiplizierend einfügen - (Excel, Office)

Das geht alles nur per VBA, hier ist jetzt folgende Variante.

Alles was in A1 eingegeben wird, wird automatisch  * 9 genommen. Alles was in A2 eingegeben wird, wird automatisch -2 genommen und alles was in A3 kommt wird durch 3 geteilt.

Diesen Code musst du dann mit ALT+F11 im VBA Modus in deine Tabelle ablegen und natürlich für deine anderen Zellen erweitern und auch hier die Zellen A2 und A3 anpassen:

Option Explicit
Dim changing As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
'Row = 1 bedeutet Zeile 1
'Column = 1 bedeutet Spalte A 
If (Not changing) Then
If (Target.Row = 1) And (Target.Column = 1) Then
changing = True
Target.Value = Target.Value * 9
changing = False
ElseIf (Target.Row = 2) And (Target.Column = 1) Then
changing = True
Target.Value = Target.Value - 2
changing = False
ElseIf (Target.Row = 3) And (Target.Column = 1) Then
changing = True
Target.Value = Target.Value / 3
changing = False
End If
End If
End Sub

Hilft dir das so weiter?

Taemin 27.08.2015, 10:07

Ich habe mich noch nicht mit VBA beschäftigt, aber ich werde es nachher ausprobieren. Den Hauptteil kann ich soweit nachvollziehen.,aber jede einzelne Zeile nicht. Vielen Dank dafür. Ich werde es später testen.

0
Suboptimierer 29.08.2015, 12:02

Ich habe gerade kein VBA zur Hand, aber das mit dem Changing kann man alternativ auch so lösen, dass man für die Berechnung die Ereignisbehandlung ausstellt. Fehler müssen abgefangen werden und am Ende muss die Ereignisbehandlung wieder aktiviert werden:

Application.EnableEvents = False
On Error Goto Fehler
...
Fehler:
Application.EnableEvents = True


Um sich viele Ifs usw. zu ersparen, könnte man die Multiplikatoren in den Kommentaren der Zellen hinterlegen. Diese werden dadurch zweckentfremdet. Das macht die Lösung nicht schön, aber praktikabel.

0

Was möchtest Du wissen?