Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

NETTOARBEITSTAGE.INTL als Matrixformel

NETTOARBEITSTAGE.INTL als Matrixformel
12.10.2021 16:41:42
Thilo
Hallo, liebe Profis...
seit zwei Tagen beiße ich mir die Zähne an einem Problem mit NETTOARBEITSTAGE.INTL aus und kann weder selber herausfinden, was es ist, noch habe ich online etwas Hilfreiches finden können.
Aktuell vermute ich, dass NETTOARBEITSTAGE.INTL nicht als Matrixformel verwendbar ist. - Kann das sein?
Das Problem
Wie so oft, soll ein Excel für die Zeiterfassung und Urlaube verwendet werden.
Es gibt eine Tabelle "Arbeitszeiten", in der ALLE Zeiten ALLER Mitarbeiter stehen. Hier funktioniert alles wie gewünscht.
Dann gibt es eine Tabelle "Urlaube", in der ALLE Urlaube ALLER Mitarbeiter stehen.
Userbild
Natürlich soll jeder Urlaub "am Stück" eingetragen werden, d.h. nicht in mehreren Teilen auf die betroffenen Kalendermonate verteilt, wenn ein Urlaub mal über die Monatsgrenze hinweggeht oder über den Jahreswechsel.
Außerdem ist in einer Tabelle "Arbeitszeitmodelle" für jeden Mitarbeiter hinterlegt, welche Tage Arbeitstage sind und wieviele Stunden an welchem Tag zu leisten sind.
Userbild
Hier ist auch die Vorbereitung der Definition [Wochenenden] für jeden Mitarbeiter drin, sodass ich mit der Funktion NETTOARBEITSTAGE.INTL direkt darauf zugreifen kann (als Textstring).
Der Knackpunkt ist dann die Tabelle "Auswertungen".
Userbild
Hier sind, nach Monaten gegliedert, die Soll- und Ist-Zeiten aller Mitarbeiter drin - sowie die Urlaubstage, die IM JEWEILIGEN MONAT zusammenkommen.
Aus der großen Tabelle "Urlaube" soll die Funktion jeweils aufsummieren, wieviele Arbeitstage für den jeweiligen Mitarbeiter (siehe Arbeitszeitmodell) IN DIESEM MONAT als Urlaub abgezogen werden müssen. (Auch die Feiertage müssen beachtet werden. Aber das lass ich erstmal weg, weil es nicht einfach mit dem [FEIERTAGE]-Parameter in der Funktion zu machen ist. Und ich glaub, das Problem liegt auch nicht daran.)
Gedanklich splitte ich die Lösung zunächst in vier Fälle:
  • Urlaub beginnt und endet im Abrechnungsmonat

  • Urlaub beginnt im Vormonat und endet im Abrechnungsmonat

  • Urlaub beginnt im Abrechnungsmonat und endet im Folgemonat

  • Urlaub beginnt im Vormonat und endet im Folgemonat

  • Selbst wenn ich nur einen dieser Fälle betrachte, gibt mir, als Matrixformel, die Funktion NETTOARBEITSTAGE.INTL einen #WERT! Fehler aus.
    Hier die (noch reduzierte Funktion, die ich benutze:
    
    =SUMME(N(Urlaube[Mitarbeiter]=K$1) * N(Urlaube[Erster freier Tag]>(DATWERT(VERKETTEN("01.";J9;I9))-1)) * N(Urlaube[Letzter freier Tag]
    Wenn ich mir die Formelauswertung ansehe, dann zieht Excel Schritt für Schritt die richtigen Werte aus der Matritze - nur in der Funktion NETTOARBEITSTAGE.INTL fügt er den Bereich der Matrix ein, anstatt die einzelnen Werte zu ziehen:
    Userbild
    Das macht Excel für die "Bis"-Matrix noch einmal, danach läuft die Formelprüfung weiter korrekt. Wenn es dann aber daran geht, die Funktion auszuführen, dann sieht es so aus:
    Userbild
    Und dann passiert Folgendes:
    Userbild
    Meine Fragen:
  • Kann mir jemand sagen, ob die Funktion NETTOARBEITSTAGE.INTL bekannte Probleme als Matrixformel hat?

  • Und falls JA, habt Ihr einen Vorschlag (nach Möglichkeit gern ohne VBA, geht aber zur Not auch), wie ich anders die effektiven Urlaubstage des Mitarbeiters im jeweiligen Monat ausrechnen kann?

  • Bitte entschuldigt, dass das hier so lang geworden ist. Ich hoffe, ich habe alles verständlich dargestellt und würde mich RIESIG freuen, wenn jemand von Euch etwas zum Thema beisteuern kann.
    Vielen, lieben Dank!
    Der Thilo

    11
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: NETTOARBEITSTAGE.INTL als Matrixformel
    12.10.2021 16:52:49
    Hajo_Zi
    Hallo Thilo,
    Du bist im falschen Forum. Bildbearbeitung ist ein anderes.
    Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
    Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
    Ich baue keine Datei nach, die Zeit hat schon jemand investiert.
    Schau mal hier
    Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
    Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch.
    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten ändern. Schaue Datei
    http://hajo-excel.de/gepackt/fremd/Datei_verschluesseln.zip
    Falls Du den Download des Forums nicht benutzen möchtest, beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)
    Das ist nur meine Meinung zu dem Thema.
    GrußformelHomepage
    Anzeige
    AW: NETTOARBEITSTAGE.INTL als Matrixformel
    13.10.2021 13:29:08
    Thilo
    Hallo, Hajo...
    ich glaub, ich hab's gleich ein zweites Mal verbockt. Hatte meine Antwort auf Deine Rückmeldung wohl als Antwort auf meinen ursprünglichen Post gemacht, anstatt auf Deine Nachricht.
    Hier sicherheitshalber der Link auf die Antwort mit dem angehängten XLS.
    https://www.herber.de/forum/messages/1851463.html
    Sorry nochmal und viele Grüße,
    Thilo
    AW: NETTOARBEITSTAGE.INTL als Matrixformel
    12.10.2021 17:44:23
    Thilo
    Hallo, Hajo und alle anderen noch einmal.
    Bitte entschuldigt, da sind unsere Ansätze wohl sehr unterschiedlich. Ich wollte nicht einfach frech die Datei hochladen nach dem Motto "Bringt Ihr mir das mal bitte in Ordnung." Das hätte ich für unverschämt gehalten. (Und ich selbst sehe gern schnell in Bildern den Zusammenhang, daher die vielen Screenshots.)
    So... hier also die Datei. Die Zeiten-Daten sind sowieso fiktiv und zum Ausprobieren, außer meine 40 Stunden/Woche. ;-)
    https://www.herber.de/bbs/user/148576.xlsx
    Ich versuche noch einmal, das ohne Bilder zusammenzufassen:
    Das Problem tritt mit der NETTOARBEITSTAGE.INTL Funktion auf.
    Aktuell vermute ich, dass NETTOARBEITSTAGE.INTL nicht als Matrixformel verwendbar ist. - Kann das sein?
    Das Problem
    Wie so oft, soll ein Excel für die Zeiterfassung und Urlaube verwendet werden.
    Es gibt eine Tabelle "Arbeitszeiten", in der ALLE Zeiten ALLER Mitarbeiter stehen. Hier funktioniert alles wie gewünscht.
    Dann gibt es die Tabelle "Urlaube", in der ALLE Urlaube ALLER Mitarbeiter stehen.
    Natürlich soll jeder Urlaub "am Stück" eingetragen werden, d.h. nicht in mehreren Teilen auf die betroffenen Kalendermonate verteilt, wenn ein Urlaub mal über die Monatsgrenze hinweggeht oder über den Jahreswechsel.
    Außerdem ist in einer Tabelle "Arbeitszeitmodelle" für jeden Mitarbeiter hinterlegt, welche Tage Arbeitstage sind und wieviele Stunden an welchem Tag zu leisten sind.
    Hier ist auch die Vorbereitung der Definition [Wochenenden] für jeden Mitarbeiter drin, sodass ich mit der Funktion NETTOARBEITSTAGE.INTL direkt darauf zugreifen kann (als Textstring).
    Der Knackpunkt ist dann die Tabelle "Auswertungen".
    Hier sind, nach Monaten gegliedert, die Soll- und Ist-Zeiten aller Mitarbeiter drin - sowie die Urlaubstage, die IM JEWEILIGEN MONAT zusammenkommen.
    Aus der großen Tabelle "Urlaube" soll die gewünschte Funktion jeweils aufsummieren, wieviele Arbeitstage für den jeweiligen Mitarbeiter (siehe Arbeitszeitmodell) IN DIESEM MONAT als Urlaub abgezogen werden müssen. (Auch die Feiertage müssen beachtet werden. Aber das lass ich erstmal weg, weil es nicht einfach mit dem [FEIERTAGE]-Parameter in der Funktion zu machen ist. Und ich glaub, das Problem liegt auch nicht daran.)
    Ich habe einen Ausschnitt der Tabelle AUSWERTUNGEN auf das Blatt URLAUBE kopiert, damit man dort an Ort und Stelle probieren kann. Wenn die Formel dort funktioniert, dann kann man sie ins Blatt AUSWERTUNGEN zurück übertragen.
    Gedanklich splitte ich die Lösung zunächst in vier Fälle:
  • Urlaub beginnt und endet im Abrechnungsmonat

  • Urlaub beginnt im Vormonat und endet im Abrechnungsmonat

  • Urlaub beginnt im Abrechnungsmonat und endet im Folgemonat

  • Urlaub beginnt im Vormonat und endet im Folgemonat

  • Selbst wenn ich nur einen dieser Fälle betrachte, gibt mir, als Matrixformel, die Funktion NETTOARBEITSTAGE.INTL einen #WERT! Fehler aus.
    Hier die (noch reduzierte) Funktion, soweit wie ich sie aktuell habe:
    ={SUMME(N(Urlaube[Mitarbeiter]=K$1) * N(Urlaube[Erster freier Tag]>(DATWERT(VERKETTEN("01.";J4;I4)) -1))
    * N(Urlaube[Letzter freier Tag] * NETTOARBEITSTAGE.INTL(Urlaube[Erster freier Tag];Urlaube[Letzter freier Tag];
    WVERWEIS(Urlaube[Mitarbeiter];Arbeitszeitmodelle[#Alle];9;FALSCH)))}
    Wenn ich mir die Formelauswertung ansehe (F9 oder FORMELN/FORMELAUSWERTUNG), dann zieht Excel Schritt für Schritt die richtigen Werte aus den Matritzen - nur in der Funktion NETTOARBEITSTAGE.INTL fügt Excel den Bereich der Matrix ein, anstatt die einzelnen Werte zu ziehen. Dies in den beiden Parametern [Ausgangsdatum] und [Enddatum]. In den anderen Parametern läuft die Formelprüfung korrekt weiter.
    Wenn es dann aber daran geht, die Funktion auszuführen, dann gibt die Formelauswertung schon den #WERT! Fehler zurück, eben genau in der NETTOARBEITSTAGE.INTL Funktion.
    Meine Fragen:
  • Kann mir jemand sagen, ob die Funktion NETTOARBEITSTAGE.INTL bekannte Probleme als Matrixformel hat?

  • Und falls JA, habt Ihr einen Vorschlag (nach Möglichkeit gern ohne VBA, geht aber zur Not auch), wie ich anders die effektiven Urlaubstage des Mitarbeiters im jeweiligen Monat ausrechnen kann?

  • Bitte entschuldigt, dass das hier so lang geworden ist. Ich hoffe, ich habe alles verständlich dargestellt und würde mich RIESIG freuen, wenn jemand von Euch etwas zum Thema beisteuern kann.
    Vielen, lieben Dank!
    Der Thilo
    Anzeige
    AW: Deine Vermutung ist richtig owT
    14.10.2021 15:21:39
    neopa
    Gruß Werner
    .. , - ...
    AW: Deine Vermutung ist richtig owT
    14.10.2021 15:47:08
    Thilo
    Hallo, Werner...
    vielen Dank für Deine Bestätigung. Das ist schon mal hilfreich.
    ... aber sag, gibt es irgendeine andere Lösung, die Dir (oder wem anders) für das Problem einfällt?
    Dank nochmal und liebe Grüße,
    der Thilo
    AW: nachgefragt ...
    14.10.2021 15:52:58
    neopa
    Hallo Thilo,
    ... hab mir jetzt nicht alles durchgelesen. Wenn Du aber die Netto-Arbeitstage ohne die jeweiligen Urlaubstage ermitteln willst, würde ich die jeweiligen Urlaubstage bei monatsübergreifenden Urlaub diesen nur monatsbezogen erfassen und deren Tage summiert für den jeweiligen Monat von den Nettoarbeitstagen abziehen.
    Gruß Werner
    .. , - ...
    Anzeige
    AW: nachgefragt ...
    14.10.2021 16:10:35
    Thilo
    Werner, vielen Dank...
    ja, das wäre eine Drumrum-Lösung. Genau die ist aber nicht gewünscht. Lieber übertragen wir die monatsbezogenen Daten von Hand ins Auswertungsblatt.
    Vielleicht fällt ja wem anders noch was ein?
    Wenns mit "echten" Funktionen nicht geht, gern auch als VBA. (Bin da zwar nicht sooo fit drin, aber irgendwann muss ich auch das mal üben, oder?)
    Liebe Grüße nochmal,
    der Thilo
    AW: als Formel -Lösungsmöglichkeit bliebe ...
    14.10.2021 16:35:30
    neopa
    Hallo Thilo,
    ... eine Matrix aller Arbeitstage des jeweiligen Jahres aufzustellen. Dies könnte man z.B. mit INDEX() und AGGREGAT() unter Nichtberücksichtigung der Wochenendtage, Feiertage und Urlaubsliste des jeweiligen MA zwar sicherlich nicht ganz einfach (mit und auch ohne Hilfsspalten) ermöglichen. Diese kann dann für den jeweiligen Monat dann auch ohne NETTOARBEITSTAGE.INTL() ausgewertet werden.
    Mit VBA kann das natürlich auch ermittelt werden aber mit VBA beschäftige ich mich nicht.
    Gruß Werner
    .. , - ...
    Anzeige
    AW: NETTOARBEITSTAGE.INTL als Matrixformel
    16.10.2021 22:36:21
    Besserwisser
    Hallo Thilo,
    man kann ein bisschen mit MTRANS tricksen:
    =SUMME(N(Urlaube[Mitarbeiter]=K$1) * N(Urlaube[Erster freier Tag]>(DATWERT(VERKETTEN("01.";J4;I4)) -1)) * N(Urlaube[Letzter freier Tag]<DATUM(I4;SVERWEIS(J4;Monatsnamen;2;FALSCH)+1;1)) * MTRANS(NETTOARBEITSTAGE.INTL(MTRANS(Urlaube[Erster freier Tag]); (MTRANS(Urlaube[Letzter freier Tag])); MTRANS(WVERWEIS(Urlaube[Mitarbeiter]; Arbeitszeitmodelle[#Alle];9;FALSCH)))))
    Gruß
    Christian
    AW: NETTOARBEITSTAGE.INTL als Matrixformel
    17.10.2021 15:29:33
    Thilo
    Christian, Du bist ein Fuchs!
    Vielen Dank, das ist wirklich clever, die blöde NETTOARBEITSTAGE.INTL innerhalb von MTRANS zu verstecken!
    Ich hab zwischenzeitlich selbst eine ganz gute Lösung gefunden. Allerdings unter der Voraussetzung, dass jeder Urlaub sich maximal über EINEN Monatswechsel erstecken darf. Aber wenn ich das Excel demnähst nochmal anfassen sollte, werde ich definitiv auf Deine Lösung umbauen.
    ... überhaupt werd ich mir das merken, dass man zickige Funktionen u.U. mit MTRANS gefügig machen kann.
    Dank nochmal und Grüße in die Runde.
    Thilo
    Anzeige
    AW: das reicht allerdings so nur dann, ...
    19.10.2021 09:24:50
    neopa
    Hallo Christian und Thilo,
    ... wenn es keine Monatsüberschneidungen gibt. Ändere z.B. mal den Urlaubsbeginn in B2 auf den 27.12.20 oder/ und das Ende auf den Anfang von Februar. Dafür bräuchte es weiterer Anpassung.
    Gruß Werner
    .. , - ...

    82 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige