vielleicht liegt die Schulzeit wo ich Excel "gelernt" habe doch etwas weit zurück. Seit einer Stunde versuche ich folgendes Problem zu lösen:
Ich habe in einer Excel-Tabelle ca. 15 Werte (Zahlen) in 15 Zeilen in der gleichen Spalte eingegeben. Nun möchte ich, dass wenn ich in einer beliebigen Zeile die Zahl verändere, sich die anderen Zahlen in der Spalte proportional/prozentual gleich dazu verändern. Als Beispiel: Ich verändere die Zahl in der 1. Zeile der Spalte von 50 auf 100. Dann sollen alle anderen Zahlen in der Zeile sich auch verdoppeln.
Ich hoffe ihr könnt mir bei meinem kleinen Problem weiter helfen, so dass ich die Tabelle weiter bearbeiten kann.
nun möchte ich das alle zahlen in Verbindung zueinander stehen, so dass wenn ich nur eine Zelle (egal welche) verändere, sich die anderen Zellen proportional mit verändern. Sprich, ich mache aus der Zelle a5 67, dann sollen sich alle anderen zellen um den gleichen "prozentualen" wert verändern. Ist für eine Rezeptur, wo ich die Milligramm Zahlen der Inhaltsstoffe verändern muss, sich aber die anderen Zahlen der Inhaltsstoffe mit verändern, so dass ich nicht jeden Wert per Hand einzeln ausrechnen muss.
ich verstehe, worauf du hinauswillst. Das ist aber gar nicht so trivial. Du kannst nämlich in einer Zelle nur entweder einen festen Wert oder eine Formel stehen haben. Das was du willst geht denke ich nur über VBA. Du musst ja schließlich irgendwo den alten Wert irgendwo zwischenspeichern, damit das Verhältnis der Änderung zum neuen Wert berechnet werden kann. Erst wenn dieses Verhältnis bekannt ist, dann kannst du die anderen 14 Einträge neu berechnen.
Könntest du dir auch die Berechnung über eine Hilfsspalte vorstellen? Dann ginge das so wie in der Beispielmappe anbei. Darin kannst du in F1 die gewünschte zu verändernde Zeilennummer eingeben und in F2 den neuen Wert. In Spalte H werden dann alle neuen Werte errechnet und du kannst diese als feste Werte über Spalte A drüberkopieren.
folgender Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes:
Private Sub Worksheet_Change(ByVal Target As Range) Dim dblT As Double Dim lngZ As Long Dim rngB As Range Dim varB As Variant
Set rngB = Me.Range("A1:A15") 'Bereich entsprechend anpassen If Not Application.Intersect(Target, rngB) Is Nothing Then If Target.Cells.Count = 1 Then On Error Resume Next Application.EnableEvents = False dblT = Target.Value Application.Undo dblT = dblT / Target.Value varB = rngB.Value For lngZ = LBound(varB) To UBound(varB) varB(lngZ, 1) = varB(lngZ, 1) * dblT Next lngZ rngB.Value = varB Application.EnableEvents = True On Error GoTo 0 End If End If End Sub
Die Datei muss dann aber als Makrodatei mit der Endung xlsm gespeichert werden.