In Excel in der gleichen Zelle multiplizieren?
Hallo,
ich möchte in Excel alle Werte in einer Spalte mal 5% nehmen.
Bsp.:
D3
100
150
40
90
Die neuen Werte sollen aber in D3 weiterhin bestehen bleiben und ich möchte das automatisch machen. Nicht immer den Wert mal 1,05 nehmen bei jeder Zelle den ich hab ca. 1200 Werte die ich multiplizieren möchte. Ich hoffe ihr versteht mein Problem.
4 Antworten
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?
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. ㋛
Kennst du Formeln mit Bezug auf "relativen" und "absoluten" Wert?
Ich kann deine Beschreibung nicht in eine Formel umwandeln - du hast 1200 versch Werte, die du mit 105 multiplizieren willst?
Kannst mal einen Screenshot der Excel Tabelle machen - mit dem Fraglichem 5%Wert?
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)
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.
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.