Urlaubsplaner
#31
Moin,

vielen Dank für die tolle Hilfe.

Ich hoffe mal das wir so bald wie möglich 365 bekommen.

Eine schöne Restwoche euch.

MFG Jens
Antworten Top
#32
Hallo Edgar,

ich muss noch mal bei deinen Erfahrungen mit LET() zum Thema Begrenzungen von Verschachtelung anklopfen. Weißt du dazu einen Link.

Des Weiteren hatte ich dich leider mit der UDF Formel Ausgabe in die falsche Richtung gelenkt.

Es macht ja eigentlich nur Sinn die beantragten Zeiträume für das eingestellte Kalenderjahr auszugeben. 

Da habe deine Formel geschnappt und versucht die Variablen direkt passend zu füttern, so dass die Liste durch x Jahre genutzt werden kann. Da gab es dann Probleme mit der Verschachtelungstiefe. 

Letztendlich hab ich mich dann doch ganz anders rantasten können. 

Einzig geblieben ist, dass wenn noch keine Einträge im Vorjahr in der Tabelle Abwesenheiten standen natürlich die volle Anzahl Urlaub als Resturlaub berechnet wird.
Dem kann man entweder mit entsprechenden Dummy Einträgen für 1. vergangene Jahr begegnen oder ignoriert dies kurzerhand im ersten Nutzungsjahr.

Jetzt habe ich auch begriffen, warum du die Listobjekte aufgehoben hast. Die verschlechtern bei solchen komplexen Sachen die Performance drastisch (man lösche da mal am Ende eine Zeile).

Anbei mal noch die Datei. Eigentlich sollte ich es mit den Bedingungen richtig gemacht haben - hoffe ich mal. Wenn du einen besseren Weg weißt wäre ich interessiert dran.

.xlsx   Urlaubsplaner neu gebaut.xlsx (Größe: 668,83 KB / Downloads: 7)

Gruß Uwe
Antworten Top
#33
Hallo Edgar,
 
anbei die Datei. Bei allen Funktionen, welche in O2024 vorhanden sind (im Dropdown angezeigt werden) habe ich einen Haken in neuer Spalte gesetzt.
 
Was nicht im Dropdown angezeigt wurde habe ich noch nicht überprüft, ob die Funktion nicht doch vorhanden ist (Beispiel: DATEDIF). Das kommt noch.
Deshalb habe ich (bei den nicht im Dropdown angezeigten Funktionen) noch keine Sperrscheibe gesetzt.

.xlsx   Alle_Funktionen_Version_4.xlsx (Größe: 206,92 KB / Downloads: 8)

Gruß Uwe
Antworten Top
#34
Hallo Uwe,

danke für die Erweiterung. 
Bei den noch offenen Funktionen gilt erstmal Folgendes:
DATEDIF ist eine nicht dokumentierte Funktion, die in allen Versionen vorkommt, aber mangels Dokumentation wohl nicht aufgeführt ist.
ASC, ISO.OBERGRENZE, OBERGRENZE.GENAU und UNTERGRENZE.GENAU sind Standardfunktionen, die seit 2016 existieren.

Zitat:ich muss noch mal bei deinen Erfahrungen mit LET() zum Thema Begrenzungen von Verschachtelung anklopfen

keine Erfahrungen diesbezüglich.

Zitat:so dass die Liste durch x Jahre genutzt werden kann

das könnte man vielleicht durch eine Lambda-Funktion erschlagen, allerdings habe ich damit so meine Probleme. Das wäre eher was für Exl121150, ich weiß aber nicht ob der hier aktiv ist.
Gruß

Edgar

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

beim Abgleich der offen gelassenen Zellen (für Test der betreffenden Funktionen ) bin ich zum selben Ergebnis gekommen. Der Rest REGEX... gibt es in O2024 noch nicht.

Gruß Uwe
Antworten Top
#36
Hallo Miteinander,
 
Die etwas zusammengebastelte Formel zur Ausgabe der Resturlaubstage in der Tabelle "Basisdaten für das Kalenderjahr ..." in Spalte "Rest Vorjahr"
habe ich nun mal entsprechend umgebaut und einen Rechenfehler um einen Tag beseitigt. Des Weiteren ist die Formel um eine zusätzliche Bedingung "wenn im Vorjahr kein Urlaub beantragt wurde dann Ausgabe 0" erweitert.

Damit sind die Startbedingungen für die Erstverwendung dieser Datei sinnvoll.
in J3 und runterziehen:
Code:
=LET(
  xa; FILTER(Tbl_Abwesenheit[[Mitarbeiter]:[Grund]]; (Tbl_Abwesenheit[Mitarbeiter]=G3)*(Tbl_Abwesenheit[Grund]="U"));
  xGu;$I3;
  xJahr; Ausgabe!$B$1 - 1;
  xVon; INDEX(xa;;2);
  xBis; INDEX(xa;;3);
  xd; FILTER(rng_AFt; rng_GFT=1);
  xb; ANZAHL(xVon);
  berechnet; WENN(
    xb = 0;
    0;
    SUMME(
      MAP(
        xVon; xBis;
        LAMBDA(a;b;
          WENNFEHLER(
            WENN(
              JAHR(a) = xJahr;
              NETTOARBEITSTAGE.INTL(a; WENN(JAHR(b) > xJahr; DATUM(xJahr; 12; 31) - 1; b); 1; xd);
              WENN(
                (JAHR(a) < xJahr) * (JAHR(b) >= xJahr);
                NETTOARBEITSTAGE.INTL(DATUM(xJahr; 1; 1); WENN(JAHR(b) > xJahr; DATUM(xJahr; 12; 31) - 1; b); 1; xd);
                0
              )
            );
            0
          )
        )
      )
    )
  );
  xErgebnis; MAX(0; xGu - berechnet);
  WENN(xErgebnis = xGu; 0; xErgebnis+1))
Einzig die Verwendung von Listobjekten (formatierte Tabelle) in Verbindung mit den neuen Funktionen macht Probleme, wenn man Zeilen aus einem Listobjekt löschen will. Da stehen sich diese beiden Sachen im Wege rum. Eine Zeile löschen aus Tbl_Abwesenheit dauert ca. 12 Sekunden.
 
Ebenso per VBA eine neue Zeile einfügen dasselbe Spiel. Händisch eine neue Zeile eintragen funktioniert zügig

Gruß Uwe
Antworten Top


Gehe zu:


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