In Excel in der gleichen Zelle multiplizieren?

4 Antworten

so eine Aktion kann sehr gefährlich sein, weil Du nicht nachvollziehen kannst, ob die Multiplikation schon erfolgt ist oder nicht. Deshalb das folgende "Sicherheitsmakro", das die Situation in jeder Zelle dokumentiert:

  • Sub AddFakt()
  • Dim c As Range, Fortsetz, Fakt As Range
  • If Selection.Count < 2 Then MsgBox " nur eine Zelle ausgewählt!": End
  • Set Fakt = Application.InputBox("Faktorzelle anklicken", "Addfakt", , , , , , Type:=8) 'geht auch mit nur einem , dazwischen
  • For Each c In Selection
  • If IsEmpty(c) Then GoTo Leerübersprungen
  • On Error Resume Next:
  • If IsError(c.Value * 1) Then
  • Fortsetz = MsgBox(c.Address _
    & " überspringen? Zelle enthält diesen Eintrag____: " & c.Formula, vbYesNo)
  • If Fortsetz = vbNo Then c.Select: End
  • If Fortsetz = vbYes Then GoTo Leerübersprungen
  • End If
  • If c.HasFormula Then
  • c.FormulaLocal = "=(" & Mid(c.FormulaLocal, 2, 999) & ")*" & Fakt
  • Else
  • c.FormulaLocal = "=" & Fakt & "*(" & c.Value & ")"
  • End If
  • Leerübersprungen:
  • Next c
  • End Sub

Hier wird die Multiplikation per Formel durchgeführt, wobei der Faktor in einer (anzuwählenden) Stelle stehen (und bleiben) muss.(die Faktorzelle kann aber hinterher verschoben werden. Ausserdem kann der Faktor nachträglich geändert werden)

Vor Betätigung des Makros alle gewünschten Zellen auswählen.

ach so, ja, bei schon vorhandenen Formeln wird eingeklammert und der Faktor hinten angehängt, bei Zahlen vorneweg eingefügt und der ursprüngliche Wert ebenfalls geklammert (wäre nicht nötig, nur wegen vllt besserer Erkennung)

0

Schreibe in eine leere Zelle:
1,05
(oder 0,05 ; Du drückst Dich da nicht eindeutig aus)
Kopiere diese Zelle.
Markiere Deine Werte ("Ameisen" in der kopierten Zelle laufen noch)
Rechtsklick/ Inhalte einfügen.../ Vorgang --> Multipliziern/ OK
Fertig.
Habe ich Dich richtig verstanden?

ich habe es so verstanden, dass NicoZimm einfach Werte eingeben möchte und diese bei der der Eingabe gleich 5% mehr enthalten sollen. Ohne Zusatzspalte, ohne manuellen Aufwand, etc.

1
@Esskah

Ja, das habe ich schon aus Deinem Code geschlossen.
ICH habe es aber so verstanden, dass bestehende Daten auf einen "Wisch" erhöht werden sollen. Und das klappt so am besten.

Lass uns hoffen, dass der FS Rückmeldung gibt und wir erfahren, wessen Glaskugel besser ist.

0

Dazu müsstest Du einen VBA Code auf das Tabellenblatt anwenden. Klicke mit rechts auf das Tabellenblattsymbol unten und dann auf "Code anzeigen"

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 4 Then '(die 4 steht für Spalte D, A=1, B=2, usw.)

On Error GoTo ErrorHandler

Application.EnableEvents = False

Target.Value = Target.Value * 1.05

ErrorHandler:

Application.EnableEvents = True

End If

End Sub

Jetzt den Editor schließen und die Datei als *.xlm abspeichern

Warum das Change-Event? Das lese ich aus der Frage nicht heraus. Kann mich aber auch täuschen.
Und mit dem speicher als .xlm ist wohl ein Tippfehler?
.xlsm
ist angesagt.

0
@Oubyi

ja, ist ein Tippfehler, muss .xlsm heissen

1

Was möchtest Du wissen?