Das Forum ist aktuell sporadisch nicht erreichbar - wir arbeiten dran. Laut Fehlermeldung Service Unavailable oder Internal Server Error, wir sind allerdings im Hosting ... x

Ziemlich idente Formeln liefern unterschiedliche Ergebnisse
#1
Hallo!

Ich habe zwei ziemlich idente Formeln, aber nur eine liefert das richtige Ergebnis, nämlich die 

{=TEXT(INDEX(C:C;AGGREGAT(14;6;ZEILE(C:C)/(D:D=IR6)/(C:C>=L6)/(C:C<=MONATSENDE(L6;0));1));"TT.MM.JJJ")} 

Als Ergebnis kommt 07.05.2026 raus.

Wenn ich nun aber nicht die ganzen Spalten durchsuchen lassen will, weil mir die Datei sonst zu langsam wird und die obrige Formel auf folgende um ändere


{=TEXT(INDEX(C9:C10000;AGGREGAT(14;6;ZEILE(C9:C10000)/(D9:D10000=IR6)/(C9:C10000>=L6)/(C9:C10000<=MONATSENDE(L6;0));1));"TT.MM.JJJ")}

kommt folgendes raus: 00.01.1900

Ich habe keine Ahnung, woran das liegen kann.

Vielleicht hat ja jemand eine Idee.
Antworten Top
#2
Hola,
geraten:

Code:
=TEXT(INDEX(C9:C10000;AGGREGAT(14;6;ZEILE(C9:C10000)-8/(D9:D10000=IR6)/(C9:C10000>=L6)/(C9:C10000<=MONATSENDE(L6;0));1));"TT.MM.JJJ")
Das ist übrigens keine Matrixformel, muss also nicht mit Strg-Shift-Enter abgeschlossen werden
Gruß,
steve1da
Antworten Top
#3
Hallo

ZEILE(C:C) liefert 1;2;3...
ZEILE(C9:C10000) liefert 9;10;11...

Index bezieht sich aber auf den Bereich ab 9 , erwartet wird dann 1 aus dem Bereich


=TEXT(INDEX(C9:C10000;AGGREGAT(14;6;(ZEILE(C9:C10000)-ZEILE(C9)+1)/(D9:D10000=IR6) /(C9:C10000>=L6)/(C9:C10000<=MONATSENDE(L6;0));1));"TT.MM.JJJ")

Oder verkürzt

=TEXT(INDEX(C9:C10000;AGGREGAT(14;6;(ZEILE(C9:C10000)-8)/(D9:D10000=IR6) /(C9:C10000>=L6)/(C9:C10000<=MONATSENDE(L6;0));1));"TT.MM.JJJ")


LG
Antworten Top
#4
Hallo an alle!

Danke sehr für eure schnellen Antworten. Ihr habt mir sehr geholfen. Jetzt wird das richtige Ergebnis angezeigt.
Antworten Top
#5
Hi Steve

natürlich ist das eine Matrixfunktion, auch wenn man kein STRG+SHIFT+ENTER benötigt, weil die Aggregatfunktion das auch in älteren Excelversionen automatisch erkennt.
Eine Matrixfunktion liegt immer dann vor, wenn an einer Stelle, die normalerweise einen Einzelwert erfordert (bspw eine Rechenoperation), eine Matrix mit mehreren Werten steht, die dann in einer Schleife über jeden Einzelwert berechnet werden.

Gruß Daniel
Antworten Top
#6
@Daniel: das weiß ich, habe mich leider unglücklich ausgedrückt.
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • Jockel
Antworten Top
#7
Hi
das Problem wurde ja schon gelöst, aber ich halte die gezeigten Lösungen für fehleranfällig.

aber nochmal: 
dein Aggregat + Zeile() liefert die absolute Zeilennummer der Lösungszelle
beim Index gibt man aber nicht die absolute Zeilennummer, sondern die Position innerhalb des angegebenen Zellbereichs an.
dh Index(A9:A100;9) referenziert nicht auf A9, sondern auf A17 (die neunte Zelle von A9:A100)

nur wenn der Zellbereich von Index in der Zeile 1 beginnt oder die ganze Zeile umfasst, sind Position und Zeilennummer identisch.

die einfachste Lösung ist hier, beim Index einfach C:C anzugeben, auch wenn man in der Aggregatfunktion einen anderen, kleineren Zellbereich bearbeitet.

ja, die Regel lautet, dass man innerhalb einer Matrix mit gleichgroßen Zellbereichen arbeiten muss, aber das gilt hier nicht, weil die Matrix mit dem Aggregat beendet ist und die Index-Funktion außerhalb der Matrix steht.

die gezeigten Lösungen mit dem Korrekturwert (-8) haben das Risiko, dass dieser angepasst werden muss, wenn Zeilen hinzugefügt oder gelöscht werden, oder sich der Zellbereich anderweitig verschiebt.

Gruß Daniel
Antworten Top
#8
Hallo,

da hier 365 vorliegt, ginge auch das:

Code:
=TEXT(MIN(FILTER(C9:C10000;(D9:D10000=IR6)*(C9:C10000>=L6)*(C9:C10000<=MONATSENDE(L6;0))));"TT.MM.JJJJ")
=LET(xa;C9:C10000;xb;FILTER(xa;(D9:D10000=IR6)*(xa>=L6)*(xa<=MONATSENDE(L6;0)));TEXT(MIN(xb);"TT.MM.JJJJ"))

Allerdings verstehe ich nicht, warum das Datum in Text umgewandelt werden muß!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Hi,

übrigens würde bei deiner Version auch

=TEXT(ÜBERNEHMEN(FILTER(C:C;(D:D=IR6)*(C:C>L6)*(C:C<=MONATSENDE(L6;0)));-1);"TT.MM.JJJ")

funktionieren.
Gruß,
Helmut

Win11 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste