Excel Formeln vereinfachen

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Excel Formeln vereinfachen

    Ich weiß nicht so recht, ob das hier unter sprachübergreifend rein passt...

    Ich quäle mich gerade mit verschachtelten Excel-Arbeitsblattformeln herum.
    Und frage mich, ob es eine einfach Lösung für folgende Konstrukte gibt:

    in z.B. P13 steht:

    =WENN(ISTFEHLER
    (WENN (ISTLEER
    (VERWEIS($B13;
    INDIREKT("'"&$C13&"'!B:B");
    INDIREKT("'"&$C13&"'!S"& SPALTE();FALSCH )));
    "";
    WENN ($AZ$3=0;
    1;
    P$39/P$38)*
    (VERWEIS($B$13;
    INDIREKT("'"&$C13&"'!B:B");
    INDIREKT("'"&$C13&"'!S"& SPALTE();FALSCH))) ));
    "n.b.";
    WENN (ISTLEER
    (VERWEIS($B13;
    INDIREKT("'"&$C13&"'!B:B");
    INDIREKT("'"&$C13&"'!S"& SPALTE();FALSCH) ));
    "";
    WENN ($AZ$3=0;
    1;
    R$39/R$38)*(VERWEIS($B$13;
    INDIREKT("'"&$C13&"'!B:B");
    INDIREKT("'"&$C13&"'!S"& SPALTE();FALSCH)
    ))))


    Unter Verweis $B13 (der Name des anderen Tabellenblatt ergibt sich aus dem Wert, der in $C13 steht.) steht
    ein Datum, nach dem auf dem anderen Tabellenblatt (in der B:B Spalte) gesucht wird.
    Auf diesem anderen Tabellenblatt wird in der gleichen Spalte (P), wie die aktuelle Zelle (des aktuellen Datenblattes), das Ergebnis geholt.
    Wenn dieses Ergebnis leer ist, wird hier auch "" ausgegeben, andernfalls wird das Ergebnis eines Buttons (0/1), das in $AZ$3 steht, verwendet,
    um das Ergebnis entweder mit 1 zu multiplizieren, oder mit dem Faktor, der sich aus P$39/P$38 ergibt.

    Falls diese beiden Berechnungen einen Fehler ergeben, weil z.B. ein Text statt Zahl in der Zelle des anderen Tabellenblattes steht, wird "n.b." ausgegeben.

    Falls es doch keinen Fehler gab, wird wiederum entweder mit 1 multipliziert, oder mit dem Faktor.



    Eigentlich müsste man doch

    VERWEIS($B13;
    INDIREKT("'"&$C13&"'!B:B");
    INDIREKT("'"&$C13&"'!S"& SPALTE();FALSCH) )


    ausklammern können. Man könnte zwar die Tabelle als Zwischenspeicher verwenden, das ist aber auch nicht unbedingt übersichtlicher.
    Solche Formeln entstehen halt so nach und nach, weil man merkt, dass noch eine Bedingung nötig ist, um etwas zu erreichen.
    Man kopiert den Term in die zweite Bedingung, und schon wird es kompliziert.

    Wie kann man so etwas leichter umgehen, oder auflösen?

    *Topic verschoben, da kein Programmierthema*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Lightsource Hat es Zweck, Zwischenergebnisse in eine separate Spalte auszulagern?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Zwischenergebnisse in Hilfszellen zwischenzulagern macht es auch nicht übersichtlicher.
    Wenn die Berechnung performant durchläuft, würde ich es lassen wie es ist.

    Allenfalls bei Performance-Problemen würde ich eingreifen.
    Dann aber bei den INDIRECT-Funktionen.
    Du könntest ein Arbeitsblatt anlegen, das den Spiegel der momentan aktiven Daten beinhaltet.
    Darauf beziehst du alle deine Formeln.
    Dieses Blatt enthält eine Datenverbindung auf die entsprechenden Daten durch Verweis auf das Source-Arbeitsblatt.
    Die Umschaltung zwischen den aktiven Blättern passiert dann durch Umschalten der Datenverbindung.

    Aber wie gesagt, nur bei Performance-Problemen.
    Das wird nur bei sehr großen Datenmengen interessant sein.

    Ansonsten: Lassen wie es ist.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Wie du auch schon erkannt hast, es bringt nichts, die Formeln auf einen anderen Bereich
    der Tabelle aufzuteilen. Es sind etwa 1000 Formeln.
    Die Funktion in VBA zu schreiben (nicht als Formula) ist auch nicht sehr performant.
    Nur den Verweis und das Indirekt irgendwo zwischen zu lagern geht auch nicht so gut,
    weil die Verweise ja teilweise auf die Spalte linken, in der die Formel gerade steht.

    Bei manchen Taschenrechnern gibt es ja die ANS-Funktion, in der man das letzte
    Ergebnis weiter verwenden kann. Ich hatte gehofft, dass es in Excel auch so etwas
    ähnliches gäbe, dass es möglich gemacht hätte, den sich wiederholenden Term
    nur einmal einzusetzen.

    Ich lasse es halt mal so.