
Ich habe Informationen zum täglichen Währungsumrechnungskurs von einer externen Site in Excel importiert.
Ich verwende den Wechselkurs jeden Tag in einigen Formeln. Das Problem ist, dass sich am nächsten Tag der Wechselkurs ändert und alle Formeln geändert werden. Ich möchte, dass sie nur für die Formeln in einer Zeile geändert werden, die sich auf das aktuelle Datum beziehen. Für gestern möchte ich den Wechselkurs von gestern beibehalten.
Gibt es eine Möglichkeit, die Aktualisierung einer Formel zu stoppen, wenn eine Bedingung erfüllt ist? Die Bedingung wäre in diesem Fall, dass das Datum, auf das sich die Formel bezieht, kleiner ist als HEUTE().
Antwort1
Ja, Sie können dieses Ergebnis ohne VBA oder sogar extreme Maßnahmen erreichen.
Allerdings nicht in der Weise, die Sie sich vorstellen. Ich bin sicher, dass diese Weise einfach die Richtung ist, in die Ihre Gedanken gegangen sind, und dass Sie sich nicht auf einen bestimmten Schritt oder eine bestimmte Bedingung festgelegt haben. Also...
Eine Möglichkeit wäre, eine Spalte für Ihre Daten hinzuzufügen oder zu verwenden, falls Sie bereits eine haben, die das Datum enthält, an dem die Daten erfasst wurden. Sobald Sie diese Spalte haben, können Sie zwei Dinge tun, vielleicht auch noch mehr, aber ich werde mich auf diese beiden Dinge konzentrieren.
Eine davon ist eine einfache IF()
Formel für die Verwendung Ihrer Zelle mit dem Wechselkurswert. Sie könnte beispielsweise so aussehen, wenn Ihre Datumsspalte Spalte A wäre, Ihre Berechnungsspalte Spalte B und der täglich wechselnde Wechselkurs in Zelle $M$1:
=IF(A1<TODAY(),B1,IF(A1>TODAY(),"",2000*$M$1))
Für das Datum in Spalte A würde die Arbeitsformel eine Berechnung durchführen. An den darauffolgenden Tagen wird dies nicht der Fall sein. Je weiter das Datum, das dem heutigen Tag entspricht, in der Spalte nach unten rückt, desto ""
korrekter werden neue Zellen, in denen nichts angezeigt wurde ( ), berechnet und schließen sich dann den anderen Zellen darüber an, die beim Fortschreiten des Datums nicht neu berechnet werden.
Wenn Sie jedoch JEMALS die Zelle über z. B. eingeben F2-Edit
und die Eingabetaste drücken, um eine Neuberechnung der Zelle zu erzwingen, WIRD die Neuberechnung der Zelle fehlschlagen, was zu einer „0“ führt, was das Ergebnis von Excel ist, wenn eine Formel aufgrund eines Zirkelbezugs nicht berechnet werden kann. Wenn Sie dies versehentlich tun, bringt Sie UNDO
( Ctrl-Z
) wieder zum Laufen. Wenn Sie dies vor dem Drücken der Eingabetaste bemerkt haben, können Sie stattdessen einfach ESC drücken, um die Änderungen beizubehalten. Formatierungsänderungen verursachen keine Probleme.
Mit etwas Vorsicht würde es also wahrscheinlich funktionieren. Wer will das? Na ja, jemand ohne eine bessere Methode.
Der zweite Ansatz ist besser. Es wäre einfacher zu handhaben und zu verwalten, wenn man eine Tabelle mit täglichen Daten in Spalte 1 und dem Wechselkurs für jedes Datum in Spalte 2 erstellte. So würde sie jeden Tag größer, wenn man den neuen Wechselkurs hinzufügt. Oder man könnte eine Tabelle so erstellen, dass Spalte 1 bereits mit vielen zukünftigen Daten gefüllt ist und der neue Wechselkurs nur täglich hinzugefügt werden muss.
Anschließend führt die Formel eine Suche Ihrer Wahl für das heutige Datum ( TODAY()
) in Spalte 1 durch und ermittelt den aktuellen Wechselkurs in Spalte 2.
Einfach zu pfropfen, auf einer Hilfsseite irgendwo versteckt. Dann bräuchten Ihre Formeln keine seltsamen Tricks. Sie könnten für die Suche auf das Datum in ihrer Datumsspalte verweisen und immer den Wechselkurs für dieses Datum finden, sogar Jahre später. Keine Bedenken hinsichtlich der Interaktion mit Zirkularität.
Diese Technik ist auch für Tabellen praktisch. Ein Vorteil von Tabellen ist, dass die Formeln mit jeder hinzugefügten Zeile nach unten gefüllt werden. Eine Schwäche von Tabellen ist jedoch, dass die Formeln mit jeder hinzugefügten Zeile nach unten gefüllt werden....
Wenn Sie eine Formel ändern müssen, wobei die alte Form in den aktuellen Zeilen erhalten bleibt, aber die neue Form nach unten verwendet wird, wenn Datenzeilen hinzugefügt werden, haben Sie ein Problem. Tabellen tun das einfach nicht. Ändern Sie alle Formeln, die Sie wollen, aber neue Formeln erscheinen immer mit der alten Formel.
Ja, technisch gesehen KANN eine solche Änderung vorgenommen werden, aber nicht alle beschriebenen Methoden funktionieren wie beschrieben. Wenn man beispielsweise vier Zeilen in einer Zeile ändert, wird dies angeblich zur neuen Formel. Meiner Erfahrung nach habe ich NIE gesehen, dass das funktioniert, wenn weniger als sechs Zeilen geändert werden und oft 10-30 Zeilen geändert werden müssen, bevor Excel aufgibt und die neue Formel verwendet. All das kann getan werden, aber ... nein, in der Praxis funktioniert es einfach nicht. Eine andere Möglichkeit besteht darin, in einen Bereich und dann zurück in eine Tabelle zu wechseln. Das schafft Probleme, obwohl diese meist geringfügig sind, aber es nimmt die erste Zeile der Formeln als Hauptformel und das ist wahrscheinlich KEINE mit der neuen Formel, also ...
Viele Formeln können jedoch so geschrieben werden, dass Änderungen ihrer Funktionsweise auch außerhalb der Tabelle möglich sind. Beispielsweise Ihr Wechselkurs. In der Tabelle gibt es lediglich einen Verweis auf einen Wert, möglicherweise einen benannten Bereich, möglicherweise einen Teil der Formel. Dieser benannte Bereich oder Teil kann auf den Datenbereich (oder die Tabelle) verweisen, der den geänderten Wechselkurs enthält. Neue Wechselkurse können also verwendet werden, ohne die Tabellenformel zu ändern. Es gibt keine Schwierigkeiten, eine Tabellenformel ändern zu müssen. Das muss man sich merken.
Es zeigt aber auch, wie oft man seine Daten, insbesondere Änderungen und Ergänzungen von Daten, vor allem durch die Vorwegnahme dieser Dinge einrichtet und es dadurch einfacher macht, die verschiedenen Teile zu ändern und zu verwenden.