[gelöst] Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

[gelöst] Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

Hi,

bin gerade dabei für unsere Firma eine komplette Urlaubsverwaltung in OpenOffice Calc zu erstellen. Bisheriges Ergebnis siehe Anhang!

Der Plan:
Jeder Mitarbeiter bekommt eine eigene Tabelle (MA01, MA02, MA03, ..., MA50) in der die Urlaubs"wünsche" eingetragen werden.

Die so eingepflegten Urlaubsdaten sollen dann im Jahresplaner optisch sichtbar sein, z.B. durch farbliche Hinterlegung wie ich es aktuell und manuell angedeutet habe.

Wie bekomme ich das so hin wie gewünscht?

---

Alternativ könnte ich mir auch vorstellen, dass die Mitarbeiter im Jahresplaner Ihre Urlaubstage z.B. mit "u" kennzeichen, und daraus dann die Mitarbeitertabellen MA01..MA50 jeweils mit den richtigen Daten befüllt werden (Urlaub von/bis -> zusammenhängende Blöcke!), wie angedeutet mit MA04.

Kann mir da jemand auf die Sprünge helfen?

---

Falls ich das sinniger Weise besser ganz anders lösen sollte, wäre ich auch hier für Tipps dankbar!

Ziel ist es eben, eine komplette Urlaubsverwaltung in AOO oder LO abzubilden.

Hylli :)
Dateianhänge
Urlaubsverwaltung_Mitarbeiter.ods
(43.37 KiB) 198-mal heruntergeladen
Zuletzt geändert von hylli am Fr, 23.09.2016 11:57, insgesamt 1-mal geändert.
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
paljass
******
Beiträge: 792
Registriert: Do, 25.10.2012 07:25

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von paljass »

Hallo Hylli,
im Jahresplaner kannst du mit

Code: Alles auswählen

SUMMENPRODUKT(C2>=$MA02.$C$18:$C$35;C2<=$MA02.$H$18:$H$35)
(hier für die Zelle C5 abfragen, ob das Datum zwischen Urlaubsanfang und Urlaubsende liegt.
Ist dem so, ist das Ergebnis der Formel die Zahl 1, falls nicht kommt 0 (null) raus; jetzt kannst du die Formel in die bedingte Formatierung packen und die Zellen per Vorlage einfärben.

Ich hoffe, das hilft dir schon malö weiter.

Gruß
paljass
EDV ist wie U-Boot fahren - machst du ein Fenster auf, fangen die Probleme an.
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

Hi,

ich denke das dürfte mir schon reichen!

Vielen Dank für die Hilfe.

Edit:
Füge ich die bedingte Formatierung im ganzen Jahresplaner ein, so bläht sich die Datei schnell auf 320kb auf.

Das wäre soweit noch OK, aber die Datei wird dann kaum noch nutzbar, weil sie sehr träge auf alles reagiert.

Teste aktuell unter LibreOffice 5.1.4 unter Linux Mint, und da geht praktisch nichts mehr.

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von balu »

Hallo Hylli,

ein paar Vereinfachungen auf die schnelle.

Im Blatt *Jahresplaner* im Zellbereich B3:NC3, hier als Beispiel B3, hast Du folgende Formel.

Code: Alles auswählen

=WOCHENTAG(B2)
 
Da machst Du ganz eindach das daraus. Formatierung der Zelle kannst Du so lassen, also das der Wochentag angezeigt wird.

Auch wenn diese Änderung ja "nur ne kleinigkeit ist", so kann sie schon mal der erste Schritt Richtung "nu wirds flotter" sein.

Die Formel von paljass ist ja ganz gut und schön, aber aus selbst gemachter Erfahrung weiß ich, das bei sehr umfangreichen Tabellen selbst so eine Formel NICHT in die Bedingte Formatierung gehört. Du erfährst ja momentan das Resultat davon.

Du könntest die Dateigröße eventuell dadurch verringern, in dem Du der Formel einen Namen zuordnest. Also Zelle C3 anwählen, dann ->Einfügen ->Namen ->Festlegen (Strg + F3) -{oder wie auch immer das in deiner Version heißen mag}-.
Dann vergibst Du einen Namen; z.B: UrlaubMarkieren
dann gibst Du folgende Formel ein

Code: Alles auswählen

SUMMENPRODUKT(C2>=$MA02.$C$18:$C$35;C2<=$MA02.$H$18:$H$35)
 
Okay, fertig.

In der Bedingten Formatierung trägst Du nicht mehr die komplette Formel ein, sondern den eben zugeordneten Namen UrlaubMarkieren.

Wie gesagt, dadurch müsste die Dateigröße schon mal etwas kleiner werden.


Aber anderseits hatte ich ja gesagt das die Formel überhaupt nicht in die Bedingte Formatierung gehört, so etwas gehört in diesem Falle ins Tabellenblatt in eine Zelle. Doch dazu müsstest Du am besten entweder ober- oder aber unterhalb der Mitarbeiter ZEILE eine weitere Zeile einfügen wo Du dann den eben vergebenen Namen eingibst. Diese zusätzlich eingefügten ZEILEN für ALLE MAs mit dem Namen kannst Du ja anschlißend wieder ausblenden.

Als nächstes fragst Du in der Bedingten Formatierung die zusätzliche Zeile ab, ob da eine 1 drin steht.

Jetzt müsste die Datei wohl wieder etwas an größe dazugewonnen haben, aber dafür müsste sie im gegenzug dazu etwas an Geschwindigkeit dazu gewonnen haben.


Meine ganz persönliche Meinung zu der Datei ist, den Urlaubsplaner so per Formel zu gestalten ist alles andere als gut.
Wenn ich sehe das Du im Blatt *Jahresplaner* insgesamt 50 MAs aufgelistest hast, müssen ja dementsprechend auch 50 einzelne Tabellenblätter für sie angelegt werden. Und das frisst enorme Resourcen, wenn der Jahresplaner nicht überarbeitet wird.

Auf den ersten Blick im Blatt *Jahresplaner* dachte ich ja schon:
"Oh wie schön! Da könnte ich dir ja eventuell eine alternative anbieten."
Aber beim genaueren hinschauen, die Anzahl an Spalten bezüglich der Tage, hatte ich meine gedachten Worte wieder zurück genommen.

Ich wollte dir nämlich vorschlagen den *Jahresplaner* per Diagramm zu gestalten. Hatte nämlich mal ein Projekt, wo 25 Stunden (im Halbstunden-Takt) waagerecht aufgeführt wurden und die MAs in der Spalte A (im Diagramm) aufgelistet sind. Dafür waren es auch lediglich nur so ca. 30 MAs deren Anwesenheit erfasst wurden.

Ich weiß also jetzt auf die schnelle nicht wie 365 Tage in einem Diagramm übersichtlich dargestellt werden können. Und zwar so, das man noch etwas erkennen kann.

Du könntest ja mal, wenn Du Zeit und Langweile hast, versuchen den *Jahresplaner* per Diagramm zu gestallten. Da mein Projekt doch insgesamt nicht grad klein war, habe ich das alles per Makro erschlagen. Also falls Du mit dem Diagramm nicht weiter kommst, sag bescheid und ich werd mal schaun was sich da machen lässt (wird dann aber bestimmt nicht von heute auf morgen geschehen).


So, und nu gehts ab in die Heia.



Guts nächtle
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

@balu:
Den Vorschlag die Funktion "WOCHENTAG" im Zellberech B3:NC3 wegzulassen, habe ich nun berücksichtigt, gleichfalls natürlich auch in B54:NC54.

Weiterhin habe ich das ganze auf 40 Mitarbeiter gekürzt, da wir derzeit nur 36 Mitarbeiter sind, dürfte das zunächst reichen.

Die Formel von @paljass habe ich nur für die Berechnung der Zellen (=Urlaub ja/nein) verwendet.

Für die bedingte Formatierung habe ich dann ZELLWERT=1 bzw. ZELLWERT=0 herangezogen und sowohl Schriftfarbe als auch Zellhintergrund gleich eingefärbt.

Das ganze führte wie gestern Nacht erwähnt unter LibreOffice 5.1.4 (Linux Mint 18) dazu, dass sich die Datei schnell auf 320kb aufblähte und kaum noch reagierte.

Ich habe nun gleiches Spiel heute Morgen unter OpenOffice 4.1.2 durchgeführt (noch mit 50 Mitarbeitern!) und die Datei läuft immer noch performant genug. Die Dateigröße ist aktuell auch "nur" 154kb groß.

Ich werde das jetzt erst einmal weiter ausbauen mit den 40 Mitarbeiterblättern und schauen, wie sich das dann auf die Performance auswirkt.

----

Zwei Fragen hätte ich dennoch:

1. Die Mitarbeiterblätter werden vermutlich mit deren Kurzzeichen benannt, derzeit also MA01..MA50.

Wie baue ich meine Funktionen mit Bezug auf Mitarbeitertabellen darauf um, dass die Bezeichnung aus Spalte 2 in der Tabelle "Urlaubsplaner" herangezogen wird, am besten per SVERWEIS bzgl. Mitarbeitername?

2. Wie fange ich einen #REF!-Fehler ab, wenn z.B. eine Tabelle nicht vorhanden ist?

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
paljass
******
Beiträge: 792
Registriert: Do, 25.10.2012 07:25

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von paljass »

Hi,
zu 1) ich denke, das geht nur mit Indirekt()

Code: Alles auswählen

=SVERWEIS(I$2;INDIREKT($B3&".$A$18:$T$35");17;0)
was aber m.W. auch wieder Performanceprobleme nach sich zieht.

zu 2) Dazu musst du eine Abfrage mit =Istfehler() in die Formeln einbauen.

Grzuß
paljass
EDV ist wie U-Boot fahren - machst du ein Fenster auf, fangen die Probleme an.
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

Hi,

momentan hat die Datei mit 40 Mitarbeitertabellen und insgesamt 49 Tabellen (inkl. Jahresplaner mit bedingter Formatierung) eine Dateigröße von 224kb und läuft immer noch absolut OK.

Das ganze unterOpenOffice 4.1.2 bzw. LibreOffice Portable 5.2.1!

---

Gestern Abend hatte die bereits 318kb mit nur 4 Mitarbeitertabellen und insgesamt 11 Tabellen (inkl. Jahresplaner mit bedingter Formatierung) und war praktisch nicht mehr nutzbar.

Da hat mir LibreOffice 5.1.4 (muss ich nochmals checken!) gestern irgendwie einen Strich durch die Rechnung gemacht?!?

---

Zu Deiner Antwort zu 1):
Ist die Funktion allgemein gehalten oder soll die irgendwo in mein Schema passen?!?

Irgendwie verstehe ich da nur Bahnhof, aber das geht mir meistens so mit Funktionskonstrukten mit INDIREKT(). :)

Hättest Du mal ein Beispiel, wie das zusammen mit der SUMMENPRODUKT()-Funktion in Zelle C5 auf dem Jahresplaner aussehen müsste?

Zu Deiner Antwort zu 2):
Auch das will mir nicht gelingen. Ich dachte da auch erst eher an ISTNV() bzw. ISTBEZUG()?

Wenn ich mit ISTFEHLER() eine Abfrage auf eine noch vorhandene Tabelle mache und diese dann lösche, erhalte ich in der Funktion dann wieder mein "#REF!".

Ich vermute allerdings, dass ich mich weiter oben etwas falsch ausgedrückt habe!

Es geht um den #REF!-Fehler in einer Funktion und nicht um das Ergebnis in einer Zelle.

Hylli
Dateianhänge
Urlaubsverwaltung_Mitarbeiter_mit_Bedingte_Formatierung.ods
(223.8 KiB) 123-mal heruntergeladen
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von balu »

Moin moin.
hylli hat geschrieben: Die Formel von @paljass habe ich nur für die Berechnung der Zellen (=Urlaub ja/nein) verwendet.

Für die bedingte Formatierung habe ich dann ZELLWERT=1 bzw. ZELLWERT=0 herangezogen und sowohl Schriftfarbe als auch Zellhintergrund gleich eingefärbt.
Ach ja dann, is ja gut.
Aber trotzdem, das was ich sagte bezüglich Namen für Formel vergeben würde ich an deiner Stelle trotzdem machen. So hast Du nämlich eine zentrale Stelle von wo Du die Formel ändern kannst.

hylli hat geschrieben: Das ganze führte wie gestern Nacht erwähnt unter LibreOffice 5.1.4 (Linux Mint 18) dazu, dass sich die Datei schnell auf 320kb aufblähte und kaum noch reagierte.

Ich habe nun gleiches Spiel heute Morgen unter OpenOffice 4.1.2 durchgeführt (noch mit 50 Mitarbeitern!) und die Datei läuft immer noch performant genug. Die Dateigröße ist aktuell auch "nur" 154kb groß.
Hatte grad eben LinuxMint 14 für die VirtuelleBox gedownloaded (ein fertiges Image welches in der Box nur noch schnell importiert werden muss, dauerte keine 5 minuten), und musste feststellen das dort nur LO 3.6.? installiert ist. Wollte dort LO updaten, da ich aber das System nicht auf Deutsch umstellen kann, wegen einerseits Fehlermeldung wegen angeblicher Internetverbindungsprobleme und anderseits wegen meiner nicht so berauschenden englisch kenntnisse, habe ich das ganze erstmal abgebrochen. Und unter WinXP bekomme ich momentan LO 5.x.x auch nicht installiert. Sorry das ich in dieser Hinsicht nicht weiterhelfen kann, was die 5er Linie anbelangt.

Die unterschiedliche Dateigröße kann aber daran liegen, das in LO irgendwo dort in den Optionen bei Laden/Speichern die Option "ODF-Format auf Größe optimieren" deaktiviert ist.
Da ich nicht weiß in wie fern sich da etwas bei LO 5.x.x geändert hat, habe ich das jetzt mal so komisch formuliert.


hylli hat geschrieben: 2. Wie fange ich einen #REF!-Fehler ab, wenn z.B. eine Tabelle nicht vorhanden ist?
Die einfachste Methode ist folgende.

Erstelle eine Liste von allen vorhandenen Tabellenblättern die sich auf die MAs beziehen. Als Beispiel in Blatt "Feietage" in der Spalte D, beginnend ab D2:
MA01
MA02
MA03
....
Dann gibst Du in E2 folgende Formel ein.

Code: Alles auswählen

=WENN(ISTFEHLER(INDIREKT(D2&".A1"));"-";1)


Jetzt noch mal etwas generelles zu deiner Fehlerbfragung z.B. in MA01 in der Zelle M5. Dort hast Du folgende Formel stehen.

Code: Alles auswählen

=WENN(ISTFEHLER(SVERWEIS($H$2;$Urlaubsplaner.$A$3:$F$52;4;0));"";SVERWEIS($H$2;Urlaubsplaner.$A$3:$F$52;4;0))
Übersichtlicher und einfacher geht.

Code: Alles auswählen

=WENN(ZÄHLENWENN($Urlaubsplaner.$A$3:$A$52;$H$2);SVERWEIS($H$2;Urlaubsplaner.$A$3:$F$52;4;0);"")


hylli hat geschrieben: Da hat mir LibreOffice 5.1.4 (muss ich nochmals checken!) gestern irgendwie einen Strich durch die Rechnung gemacht?!?
Oder diese Version ist/war noch mangelhaft (mit Fehlern behaftet).


Da ja jetzt viel mit INDIREKT gearbeitet wird, überlege ich mir momentan etwas um das System diesbezüglich zu optimieren. Oder vielleicht ist ja paljass etwas schneller ;-)



Gruß
Balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von Karolus »

Hallo

In Verbindung mit einer Formatierung zur Anzeige des Wochentags ist jede Verwendung von =WOCHENTAG(…) Quark, auch wenn da zufällig der "richtige" Wochentag angezeigt wird.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

Hi,

in Zelle C5 auf dem Urlaubsplaner, habe ich nun mal folgende Funktion/Formel eingebaut:

Code: Alles auswählen

=WENN(ISTFEHLER(INDIREKT(SVERWEIS($A5;$Urlaubsplaner.$A$3:$F$43;2;0)&".A1"));"";SUMMENPRODUKT(C$2>=INDIREKT(SVERWEIS($A5;$Urlaubsplaner.$A$3:$F$43;2;0)&".$C$18:$C$35");C$2<=INDIREKT(SVERWEIS($A5;$Urlaubsplaner.$A$3:$F$43;2;0)&".$H$18:$H$35")))
Das mit der Bezeichnung für die Formel muss ich dann noch irgendwie einbauen.

Das mit der Fehlerabfrage mit ZÄHLENWENN() werde ich mir auch noch zu Gemüte führen.

@Karolus:
Im Nachhinein ist mir das nun auch klar. :)

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von balu »

Hallo Hylli,

Um mein vorher genanntes Beispiel treu zu bleiben, habe ich im Blatt *Feiertage* alle Mitarbeiterblätter aufgelistet. Na ja, stimmt nicht ganz, denn zu demonstrationszwecken habe ich nach MA03 andere fortlaufende Namen genommen, damit Du siehst wie sich das aufs Formelsystem niderschlägt.


Im Blatt *Urlaubsplaner*:

In der Spalte AA ab AA3 das hier eingegeben.

Code: Alles auswählen

WENN(ZÄHLENWENN($Feiertage.$D$2:$D$41;B3);SVERWEIS(B3;$Feiertage.$D$2:$E$41;2;0);"-")
Und auf die Spalte AA beziehen sich alle kommenden Formeln.

Ferner habe ich in der Spalte A eine bedingte Formatierung angewendet die die Zelle Rot markiert falls kein entsprechendes Blatt vorhanden ist.


In I3 steht: =UrlaubGenommen
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA3=1;SVERWEIS(I$2;INDIREKT($B3&".A18:T35");17;0);"")


Im Blatt *Mitarbeiter*:

In A3 habe ich die dortige Formel geändert, und zwar auf das hier.

Code: Alles auswählen

=WENN($Urlaubsplaner.$AA3=1;Urlaubsplaner.A3;"")


In B3 steht: =MitarbeiterZeichen
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA3=1;SVERWEIS($A3;$Urlaubsplaner.$A$3:$F$42;2;0);"")

In C3 steht: =PersonalNr
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA3=1;SVERWEIS($A3;$Urlaubsplaner.$A$3:$F$42;3;0);"")

In D3 steht: =AntragVON
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA3=1;SVERWEIS(E$1;INDIREKT($B3&".A18:T35");3;0);"")

In E3 steht: =AntragBIS
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA3=1;SVERWEIS(E$1;INDIREKT($B3&".A18:T35");8;0);"")
Alle in diesem Blatt aufgeführten Formeln habe ich nach unten und nach rechts kopiert.



Im Blatt *Jahresplaner*:

In A4 habe ich die dortige Formel geändert, und zwar auf das hier.

Code: Alles auswählen

=WENN($Urlaubsplaner.$AA3=1;Urlaubsplaner.A3;"")

In ND4 steht: =BlattName
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN(A4<>"";SVERWEIS($A4;$Urlaubsplaner.$A$3:$B$43;2;0);"")

In B4 steht: =JahresUrlaubMitarbeiter
Die dazugehörige Formel lautet.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA3=1;SUMMENPRODUKT(B$2>=INDIREKT($ND4&".C18:C35");B$2<=INDIREKT($ND4&".H18:H35"));"")
Auch diese Formel ist auf alle Tage kopiert.
Ich sage hier und jetzt Formel, dabei meine ich doch den zugeordneten Namen. *tztztz*

In diesem Falle lohnt es sich nicht alles in eine Formel zu packen, sondern auf andere Spalten aufzuteilen. Und deshalb wird der Blattname in der Spalte ND aufgeführt und die SUMMENPRODUKT bezieht sich dann auf diese Spalte. Dadurch wirkt die SUMMENPRODUKT doch gleich viel übersichtlicher.


Schau dir die Datei in ruhe an, und melde dich bei Problemen oder sonstigen weiteren Fragen. Ich weiß nämlich jetzt nicht ob mir da ein Fehler unterlaufen ist, musst Du mal überprüfen.

Viel Vergnügen :D



Gruß
balu
Dateianhänge
Urlaubsverwaltung_Mitarbeiter_mit_Bedingte_Formatierung_x9.ods
(164.11 KiB) 110-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

Hi,

super genial! Ich war zwar auch schon relativ weit mit meinen "umständlichen" und langen Formeln, aber Deine Vorschläge werde ich wohl so übernehmen.

Einige optische Dinge wie z.B. "Mitarbeiter nur anzeigen wenn vorhanden", hast Du mir auch schon vorweg genommen.

Beim Jahresplaner habe ich noch 2 Problemfälle, vielleicht kannst Du mir auch da noch kurz weiterhelfen:
Aktuell verwende ich die bedingte Formatierung für
1. Wochenende = Grün (Zellvorlage "JP_Wochenende")
2. Urlaub genommen = Cyan Schriftfarbe/Hintergrund (Zellvorlage "JP_Urlaub")
3. Kein Urlaub = weiße/r Schriftfarbe/Hintergrund (Zellvorlage "JP_kein_Urlaub")

Würde gerne noch die Feiertage anders einfärben. Außerdem noch die für den 29.02. vorgesehene Spalte, sofern es sich nicht um ein Schlatjahr handelt.

Benötige dazu weitere Bedingungen, die mir AOO so nicht liefert. Mottco soll dabei nicht zum Einsatz kommen.

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von balu »

Hallo Hylli,
super genial!
Danke schön. :D

1. Wochenende = Grün (Zellvorlage "JP_Wochenende")
2. Urlaub genommen = Cyan Schriftfarbe/Hintergrund (Zellvorlage "JP_Urlaub")
3. Kein Urlaub = weiße/r Schriftfarbe/Hintergrund (Zellvorlage "JP_kein_Urlaub")

Würde gerne noch die Feiertage anders einfärben.
Eigentlich hast Du dir die Antwort doch schon selber gegeben, und sogar fast schon die Lösung dafür.

Aber auch für dich im Detail.
Eigentlich brauchst Du bis jetzt doch nur 2 Bedingte Formatierungen, einmal fürs Wochenende und einmal für Urlaub. Und wenn beides nicht zutrifft, soll halt die Bedingte Formatierung nix machen. Und diesen Umstand machst Du dir jetzt zu nutze
Das heißt, wenn die Bedingte Formatierung nix machen soll, oder besser gesagt, wenn keine Bedingung zutrifft, dann wird ja auch keine Formatierung angewendet und das bedeutet widerum, das die von Hand formatierte Zelle angezeigt wird. Also musst Du nur dafür sorgen das so gesehen eine gewisse "Grundeinstellung" für die Zellen existiert.

Du kamst wohl schon auf die simple Idee:
"Wenn nix angezeigt werden soll, dann mache ich die Schrift und den Hintergrund einfach Weiß."
Doch dieses System taucht nix, wenn z.B. Wochenenden angezeigt werden. Denn dann ist ja die Schrift wohl Weiß, aber der Hintergrund Grün, und folglich sieht man die Zahlen.

Diese Problem lässt sich aber ganz einfach umgehen, in dem Du wie folgt vorgehst.
Die betroffene Zelle anwählen, Rechtsklick auf die Zelle, und dann bei *Zellen formatieren* im Reiter *Zahlen* gibst Du unten bei *Benutzerdefeniert* einfach folgenden Format-Code ein.

Code: Alles auswählen

;;;
 
So viel dazu.

Da Du ja die Zellen schon per Hand formatiert hattest, die ja auch die Zellumrandung beinhaltet, hast Du jetzt eine gute "Grundeinstellung" die immer zum tragen kommt, wenn keine Bedingung in der Bedingten Formatierung zutrifft. Und das heißt, deine bisherige 3. Bedingung dort ist überflüssig, sie steht also so gesehen zur freien Verfügung. Und diesen Umstand machst Du dir jetzt zum Vorteil indem Du jetzt eine Feiertagsüberprüfung dort einbaust. Und schon hast Du eine "4 fache Bedingte Formatierung".

Doch bevor Du die einbaust brauchts ja eine möglichkeit nach den Feiertagen zu suchen. Aber auch das ist kein Problem. Einfach vor der Zeile 2 eine weitere Zeile einfügen, und dort dann in der neuen B2 folgende Formel rein.

Code: Alles auswählen

=ZÄHLENWENN($Feiertage.$A$2:$A$18;B3)
 
Und nach rechts rüberziehen.
Nun diese neue Zeile 2 einfach ausblenden.

Und jetzt die Bedingte Formatierung ändern.
Da ja die 3. frei ist, änderst Du sie wie folgt.

Code: Alles auswählen

Formel ist: B$2=1
Bedingung: JP_Feiertag
Und damit ist diese Problem schon erledigt.


Außerdem noch die für den 29.02. vorgesehene Spalte, sofern es sich nicht um ein Schlatjahr handelt.
Tja, da gibt es sehr viele möglichkeiten. Seis mit oder ohne ein Makro. Und es ist auch eine Sache des persönlichen Geschmaks.
Aber ich persönlich würde das wie folgt machen, ob Dir das gefällt musst Du sagen.

Ich kenne wohl persönlich jemanden der am 29. Februar Geburtstag hat, mein ehemaliger Klassenlehrer aus der Schulzeit, aber ich kenne bis jetzt nicht einen einzigen Feiertag der auf dieses Datum fällt. Also würde ich nur für diese Splate in der Bedingten Formatierung die Bedingung für Feiertag rausschmeisen, und dann die Reihenfolge ändern.

Code: Alles auswählen

1.Bedingung:
Formel ist: BI=""
Bedingung: FebruarEnde
Als 2. Bedingung kommt dann das Wochenende, und als 3. Bedingung der Urlaub dran.
Wobei wir dann auch schon bei einem wichtigen Punkt sind, betreffs Bedingte Formatierung.
Die eingetragene Reihenfolge der einzelnen Bedingung macht sehr viel aus. Daran sollte man immer denken. Aber wahrscheinlich ist dir das ja nicht ganz unbekannt.



Kommen wir zum Blatt *Feiertage*.
Rosenmontag, Zelle A4.
Formel dort.

Code: Alles auswählen

=WENN(ISTSCHALTJAHR(A1);OSTERSONNTAG(A1)-47;OSTERSONNTAG(A1)-48)
 
Seit wann ist denn Rosenmontag nicht nur von Ostersonntang, sondern auch noch vom Schaltjahr abhängig? Das ist mir ja was ganz neues.

Richtig ist; Rosenmontag ist 48 Tage vor Ostersonntag. Und demzufolge wird die Formel auch gleich dort geändert. Doch zuvor eine andere Änderung.

Füge vor Ostermontag eine Zeile ein, oder verschiebe den Bereich A6:B17 um eins nach unten. Das wäre dann die neue A6. Und dort gibst Du ganz einfach das ein.

Code: Alles auswählen

=OSTERSONNTAG(A1)
 
Und nun änderst Du alle Datume der Feiertage die sich auf Ostersonntag beziehen ab. Das sieht dann Beispielsweise so aus für Rosenmontag.

Code: Alles auswählen

=A6-48
Alle genannten Änderungen sind in der angehängten Datei schon vorgenommen

Das wars.
Wie gesagt, melde dich falls LO 5.x.x sich irgendwie komisch oder anders verhällt als wie von mir gedacht.



Gruß
balu
Dateianhänge
Urlaubsverwaltung_Mitarbeiter_mit_Bedingte_Formatierung_v1.ods
(166.62 KiB) 115-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von hylli »

Uiuiuiui, vielen Dank für die Änderungen und Deine Ausführungen dazu!

Da habe ich einiges zu dokumentieren, damit ich später auch wieder durchsteige.

Ein Problem besteht aktuell im Jahresplaner unter LibreOfice 5.1.4.2 (Linux Mint 18):
Es werden keine Urlaube farblich markiert!

Zum Rosenmontag:
Da hat mich irgendjemand anders dazu verleitet. Meinte, man müsse beim Schaltjahr aufpassen.

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Urlaubsverwaltung - hier: "Befüllung" Jahresplaner

Beitrag von balu »

Uiuiuiui, vielen Dank für die Änderungen und Deine Ausführungen dazu!
Gern geschehn.

Ein Problem besteht aktuell im Jahresplaner unter LibreOfice 5.1.4.2 (Linux Mint 18):
Es werden keine Urlaube farblich markiert!
Ja klar doch, FÄÄTTTER FÄHLER meinerseits. Entschuldigung. :oops:
Hatte nämlich vergessen gehabt die Formel anzupassen, nachdem ich die zusätzliche Zeile eingefügt hatte.

Wähle die Zelle B5 an.
Ändere die Formel für den zugeordneten Namen: JahresUrlaubMitarbeiter
-> Einfügen
-> Namen
-> Verwalten
-> JahresUrlaubMitarbeiter auswählen
Bei Umfang steht die Formel (zumindest in LO 4.3.4.1), und die tauscht Du gegen diese aus.

Code: Alles auswählen

WENN($Urlaubsplaner.$AA4=1;SUMMENPRODUKT(B$3>=INDIREKT($ND5&".C18:C35");B$3<=INDIREKT($ND5&".H18:H35"));"")
 
-> Ok
-> Fertig.

Aber wie gesagt, dazu muss die Zelle B5 angewählt sein, das ist extrem wichtig. Also nicht X7 oder D11, nein(!), es muss B5 sein wenn Du diese Formel dort eingibst.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten