JeanLuc hat geschrieben:
Damit meinte ich genau deine angedachte Lösung einfach die Formel runter zu ziehen und mittels WENN anzuzeigen.
Die Formel war nicht nur angedacht. Ich habe ein Testfile erstellt und sie getestet.
Was ich nicht hin bekam war deine Variante mit
=WENN(TAG(B2+1)=1;obigeFormel;"")
Sollte doch auch mit
WENN((TAG(A24)>TAG(A24+1));...;"")
Ja, muss auch so funktionieren.
Voraussetzung: Du arbeitest mit Version 2. In der 1er-Version gehen solche Matrix-Formeln noch nicht
Was mich auch ein wenig stört ist die Tatsache das in der gesamten Formel das Feld A24 bzw. die Datumszelle einer jeden Zeile 3x addressiert wird (mit deinem Vorschlag gar viermal). Kann man/frau nicht beim ersten Referenzieren eine Variable zuweisen und diese weiter verwenden?
Du kannst natürlich auch indirekt adressieren:
=WENN(TAG(INDIREKT(ADRESSE(ZEILE();SPALTE()-2)))>TAG(INDIREKT(ADRESSE(ZEILE()+1;SPALTE()-2))); SUMMENPRODUKT(MONAT($A$3:$A$32000)=MONAT(INDIREKT(ADRESSE(ZEILE();SPALTE()-2))); JAHR($A$3:$A$32000)=JAHR(INDIREKT(ADRESSE(ZEILE();SPALTE()-2)));$B$3:$B$32000);"")
Wenn Du jetzt das hier:
INDIREKT(ADRESSE(ZEILE();SPALTE()-2))
als Name speicherst (einfügen/Namen), z.B. DatumLinks
und das hier:
INDIREKT(ADRESSE(ZEILE()+1;SPALTE()-2))
als DatumUnten
dann kannst Du die Formel so schreiben:
=WENN(TAG(DatumLinks)>TAG(DatumUnten);SUMMENPRODUKT(MONAT($A$3:$A$32000)=MONAT(DatumLinks);JAHR($A$3:$A$32000)=JAHR(DatumLinks);$B$3:$B$32000);"")
Und die anderen Komponenten kannst Du auch als Namen auslagern:
VglMonat: MONAT($A$3:$A$32000)=MONAT(DatumLinks)
VglJahr: JAHR($A$3:$A$32000)=JAHR(DatumLinks)
VglSumme: $B$3:$B$32000
(Jahr, Monat, Summe würde ich nicht als Namen empfehlen)
=WENN(TAG(DatumLinks)>TAG(DatumUnten);SUMMENPRODUKT(VglMonat;VglJahr;VglSumme);"")
Oder auch:
Saldo: SUMMENPRODUKT(VglMonat;VglJahr;VglSumme)
Dann heisst die Formel noch:
=WENN(TAG(DatumLinks)>TAG(DatumUnten);Saldo;"")
Da kannst Du frei experimentieren
Eigentlich will ich sagen das mich beim grafischen editieren der Formel die vielen bunten Bereiche nerven
Deine Probleme möchte ich haben!
Aber versuchs doch mal mit dem
Funktions-Assistenten. Da kannst Du einerseits die Formel in zerlegten Teil-Strings Bearbeiten oder als schwarzen Text, ohne bunte Darstellung.
...gleichwohl sie alle das selbe aussagen sollen.
Da scheint mir ein Denkfehler vorzuliegen. Du benutzt innerhalb der Formel verschiedene Funktionen, die alle wieder einen Zellbezug benötigen. Dass der nun immer der gleiche ist, liegt am konkreten Formelaufbau. Die gleiche Formel könnte aber auch an jedem Zellbezugspunkt einen anderen Eintrag haben, insofern ist es nicht immer das gleiche, auch wenn jetzt bei Deiner Formel zufällig immer A2 steht.
Und da Du nunmal immer einen Zellbezug angeben musst, macht es ja keinen Unterschied, ob Du 3x A2 schreibst oder 3x einen Variablennamen.
Relative Zelladressen sind ja eigentlich Variablen.
Wenn Du mit Namen arbeitest, wie im obigen Beispiel, dann sind das keine Variablen mehr, sondern eigentlich Konstanten, die sich nur durch die indirekte Adressierung teilweise "austricksen" lassen. Wenn Du aber Spalten einschiebst, muss der Bezug separat angepasst werden: SPALTE()-2 nach SPALTE()-3
Lange Formeln kann man mit Namen übersichtlicher gestalten, aber für den vorliegenden Fall scheint mir die Definition dieser Namen umständlicher als die paar Zelladressen. Und man muss noch etwas bedenken:
Wenn Du einen Zellbezug wie: A2 ersetzt durch etwas wie: INDIREKT(ADRESSE(ZEILE();SPALTE()-2)) wird die Formel ja zunächst um einiges länger. Es passiert daher öfter, dass man den Fehlercode 512 bekommt, weil die Formel die zulässige Gesamtlänge überschreitet, auch wenn in der Zelle selbst nur noch ein kurzer Ausdruck sichtbar ist.
PS:
WENN((TAG(A24)>TAG(A24+1))
genügt unter Umständen nicht. Evtl. musst Du den Monat auch noch mit einbeziehen. Wenn z.B. die letzte Buchung eines Monats am 13.Februar liegt und die nächste am 20. März