Clever-Excel-Forum

Normale Version: berechneten INDEX Wert in Zelle aktualisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

ich hole in einer Tabelle zur Berechnung von Kapazitäten mit  
Code:
=INDEX(Tabelle2!A1:E32;VERGLEICH(I4;Tabelle2!A1:A32;0);VERGLEICH(J4;Tabelle2!A1:E1;0))
einen ganzzahligen Wert, von dem dann eine andere variable Zahl subtrahiert wird und nun soll das Ergebnis in der Ursprungszelle aktualisiert werden.
Bis zur Berechnung des neuen Wertes, inkl. Sicherstellung, das die Differenz positiv bleibt (sont Abbruch und Ursprungswert) klappt alles,
aber für die Übertragung / Aktualisierung des neuen Wertes fehlt mir der Weg

Für Denkanstöße bedanke ich mich sehr und stehe für Fragen gerne zur Verfügung
Was meinst Du mit Ursprungszelle? Den gefundenen Wert (B2:E32)? (Einen der beiden) Suchwert(e) (I4 oder J4)? Einen Wert in Tabelle1?
hallo LCohen,
mit Ursprungszelle (stimmt, ist ein unglücklicher Ausdruck) meine ich den von der INDEX gefunden Wert aus Tabelle 2
Dieser soll nach der "Rechnung" mit dem neuen Wert aktualisiert werden.
Denn anschließend soll in der nächsten Abfrage der "NEUE" Wert zur Verfügung stehen, bis die Kapazität auf Null ist.
Wertezellen können sich nur über VBA ändern. Entweder über ein Ereignis oder manuell angestoßen. Da I4 und J4 geändert werden, ist letzteres vermutlich sinnvoller. Oder das Ereignis leert anschließend I4 und J4.
Verstehe ich dich richtig das ich einen Button brauche, der nach "klick" über ein VBA den neuen Wert gegen den alten tauscht ?
Dann habe ich jetzt eine neue Baustelle, denn VBA ist ja mal so gar nicht meins Sad
Die VBA'ler werden sich nach dem Mittagsschläfchen melden.
Hallöchen,

im Prinzip so. Im Code ist jetzt keine Fehlerbehandlung - ich gehe davon aus, dass die gesuchten Werte vorhanden sind.
Da ich nicht weiß, wo Dein neuer Wert steht, hab ich den aus A1 ( Cells(1, 1) genommen.

Code:
Sub Makro_Wert_Ersetzen()
Dim lrow&, lcol&
With Sheets("Tabelle2")
  lrow = .Range("A1:A30").Find(what:=.Cells(4, 9).Value, after:=.Cells(1, 1)).Row
  lcol = .Range("A1:Z1").Find(what:=.Cells(4, 10).Value, after:=.Cells(1, 1)).Column
  .Cells(lrow, lcol).Value = Cells(1, 1).Value 'Hier statt 1, 1 Deine Zeile, Spalte
End With
End Sub
Hallo André,
danke für deinen Lösungsansatz. Ich habe einen Button eingesetzt und deinen Code hinterlegt, leider funktioniert der Code nur bedingt und an falscher Stelle.
Daher stelle ich mal die Tabelle online, hätte ich wahrscheinlich besser gleich gemacht, damit man besser sehen kann, was passieren soll.
In Tabelle 1 wird in Abhängigkeit von I4 und J4 im Feld M4 die aktuelle Kapazität angezeigt. Ist diese größer als die angefragte aus Feld K4 wird in N4 die neue Kapazität angezeigt.
DIESE soll jetzt in Tabelle2 in der Zelle aktualisiert werden, aus der vorher der alte Wert gefunden wurde, damit in der nächsten Abfrage der neue Wert zu Grunde gelegt werden kann.

Wird also Beispielsweise durch die Abfrage I4 mit Datum 03.01.2023 und J4 mit Auswahl Jojo der Wert in M4 = 80 gefunden und beispielsweise K4 = 30 Einheiten angefragt dann gibt mir die 
Tabelle als positiven Wert in N4 die Differenz = 80(alt)-30(angefragt) = 50(neu)
Diese 50 (neu) sollen jetzt die 80(alt) ersetzen und damit als neue Grundlage zur Verfügung stehen. Beim ersetzen/aktualisieren des Wertes muss also quasi die INDEX-Abfrage erneut stattfinden, damit die richtige Zelle in Tabelle2 referenziert wird.
Ist so etwas möglich ?
... schaue ich morgen drüber ... heute ist schon dunkel Smile