3.5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe eine Exceltabelle (ist eine Preisliste), in welcher relativ viele Einzelpreise
stehen.
Ich möchte jetzt jeden dieser einzelnen Preise per Formel mit einem Faktor einer
Zelle verknüpfen. Das heißt, wenn ich in diese eine Zelle eine 1 eingebe, dann
bleiben alle Preise gleich (* 1 quasi). Wenn ich jedoch zum Beispiel eine 1,15 dort
eingebe, sollen alle Preise automatisch um 15% erhöht werden.
Ich könnte jetzt auch in jede Zelle reingehen und dort vor den Preis "=T1*" setzen
und Enter drücken. Dann hätte ich den Preis der Zelle auch mit dem Faktor in der
Zelle "T1" verknüpft. Dann jedoch sitze ich noch Weihnachten an der Liste :-( .

Gibt es eine elegantere Lösung? Vielleicht über ein Makro?
Mir würde es reichen, wenn ich die jeweilige Zelle markiere und dann über ein
Makro diese Änderung veranlasse (=T1 x Zelleninhalt).

Danke im Voraus.

Gruß

Holger

13 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Holger,

warum nicht in eine neue Spalte einfach die entsprechende Formel
(z.B. =A1*$T$1) einfügen und dann soweit wie benötigt nach unten ziehen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

Danke für die schnelle Antwort.

Das wird so nicht funktionieren, weil die Preisliste relativ "zerklüftet" ist.
Das heißt die Preise sind unregelmäßig verteilt und teilweise mit Text in
den benachbarten Zellen. Man müsste vielleicht alle relevanten Zellen
manuell markieren und dann ein Makro auslösen können, welches die
gewünschten Änderungen an jeder einzelnen der markierten Zellen
vornimmt.
Keine Ahnung ob so etwas möglich ist.

Gruß

Holger
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Holger,

probier's mal damit
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngC As Range
If Target.Address <> "$V$1" Then Exit Sub
Application.ScreenUpdating = False
For Each rngC In Range("T1:T" & Cells(Rows.Count, 20).End(xlUp).Row)
rngC.Offset(0, 1) = rngC * Range("V1")
Next
Application.ScreenUpdating = True
End Sub


In Spalte T stehen die Einzelpreise und in V1 der Faktor.
Die geänderten Preise erscheinen in Spalte U.

Das Makro wird mit einem Doppelklick auf V1 gestartet.

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Holger,

vergiss meinen Beitrag, ich hatte AW2 nicht gelesen.
Diese Info hättest Du besser in Deine Ausgangsfrage einbauen sollen.


Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer,

ja hast recht, wäre besser gewesen - sorry.

Danke trotzdem für deine Mühe.


Gruß

Holger
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Holger,

an dieser Stelle hätte ich eigentlich eine Information von Dir erwartet, auf die man aufbauen kann um ein Makro zu erstellen.

Oder ist Dein Problem jetzt gelöst?

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer,

verstehe ich nicht.

Meine Ausgangsfrage hatte ich doch in AW2 präzisiert.

Holger
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Holger,

unter einer Präzisierung verstehe ich was anderes.

Das heißt die Preise sind unregelmäßig verteilt...


...ja aber wo?
In einer oder mehreren Spalten/Zeilen oder gar in einer zweidimensionalen Matrix?

...und teilweise mit Text in
den benachbarten Zellen


....warum erwähnst Du das, wenn es benachbarte Zellen sind, hat doch der Text keinen Einfluss auf den Preis, oder?

Was soll mit den ursprünglichen Preisen geschehen, wenn diese mit dem Faktor multipliziert sind, sind sie für immer weg?

Ich will hier nicht weiter fragen, vielleicht kannst Du sogar eine Beispielmappe (mit verfälschten Daten) ins Netz stellen und nach hier verlinken.

Mit den bisherigen Infos kann ich Dir (wenn überhaupt) leider kein Makro erstellen.

Gruß
Rainer
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Holger,

falls du wirklich alle Zelle, die neu berechnet werden sollen, markieren willst, dann kannst du das folgende Makro verwenden:

Sub multiplizieren()
'multipliziert alle markierten Zellen mit dem Wert aus der Zelle T1

Dim Zelle As Range

For Each Zelle In Selection

With Zelle
.Value = WorksheetFunction.Round(Zelle.Value * Range("T1").Value, 2)
.NumberFormat = "#,##0.00"
End With

Next Zelle

End Sub


Ansonsten siehe die Antwort 8 von Rainer.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

was ich noch vergessen hatte: Das Makro setzt voraus, dass der Zellinhalt eine Zahl ist, der Preis also allein (ohne Text) in einer Zelle steht.

Gruß

M.O.
...