Frage stellen
0

Calc Befehl Identisch als Matrixformel erstellen

gefragt 2019-01-02 10:18:47 +0100

Thomas Otte Gravatar-Bild

updated 2019-01-03 13:58:20 +0100

Hallo liebe Community,

seit etlichen Jahren benutze ich für meine Arbeitszeitübersicht ein Tabellendokument mit 12 Tabellenblättern, welches ich noch in OpenOffice erstellt habe. Mittlerweile bin ich auf LibreOffice umgestiegen, allerdings funktioniert das Dokument dort nicht wie vorgesehen:

Zu Jahresbeginn erstelle ich aus der Vorlagendatei eine neue Jahresarbeitszeitübersicht, Datum des Jahres eintragen und dann werden alle Zeilen automatisch angepasst mit Wochenenden bzw. Feiertagen. Für letztere gibt es im Tabellenblatt Januar eine Übersicht, welche Tage (in meinem Fall in Niedersachsen) Feiertage sind bzw. dienstfrei. In Spalte C sorgt eine Formel dafür, einen entsprechenden Eintrag vorzunehmen, sollte es sich um ein Wochenende oder einen Feiertag handeln. Die Formel ist als Matrixformel erstellt, da der Formelteil IDENTISCH alle Zellen der Feiertagstabelle abfragt und ggf. ein WAHR ausspuckt, aus welchem die restliche Formel dann den Eintrag "Feiertag" generiert, so zumindest in OpenOffice. In LibreOffice scheint die Kombination von Matrixformel und IDENTISCH nicht zu funktionieren. Am dargestellten Datumsformat liegt es nicht, selbst wenn ich dieses angleiche, bekomme ich ein FALSCH.

Ich würde mich freuen, wenn jemand beschreiben kann, wo das Problem liegt und eine Lösung parat hat. Die Datei habe ich angehangen in der Hoffnung, dass es meine Beschreibung und das Problem verdeutlicht.

Vielen Dank und ein frohes neues Jahr, Thomas Otte

Zeiterfassung_blanko.ots

Aktuelle Version mit Lupps Empfehlungen eingearbeitet (Stand 03.01.2019): Zeiterfassung_blanko.ots

Bearbeiten Tags ändern Melden schließen vereinen löschen

1 Antwort

0

geantwortet 2019-01-02 22:33:25 +0100

Lupp Gravatar-Bild

updated 2019-01-03 14:01:09 +0100

IDENTISCH() ist eigentlich vorgesehen, einen exakten Vergleich von Texten zu gewährleisten, falls die entsperchenden allgemeinen Berechnungsoptionen nicht gewählt sind.
Im vorliegenden Fall werden numerische Werte (Datumswerte) verglichen, bei denen diese Optionen ohnehin keine Rolle spielen. ODER(B5=$Januar.$U$5:$Januar.$U$40) als Bestandteile einer Matrixformel sollte also hier genau das Gleiche tun wie ODER(IDENTISCH(B5;$Januar.$U$5:$Januar.$U$40)). Ich habe das für April so ausprobiert, und es lefert die gewünschten Ergebnisse.
Weil ich eher empfehle, ausdrückliche Matrixformeln zu vermeiden, würde ich allerdings zu einer weiteren Änderung raten: Mit ISTZAHL(VERGLEICH(B5;$Januar.$U$5:$Januar.$U$40;0)) an der entsprechenden Stelle kann man auf Erzwingung der Matrixauswertung verzichten, weil der zweite Parameter von VERGLEICH() als ForceArray spezifiziert ist. Diese Variante habe ich für Januar erprobt. Hier ist die Datei.

Natürlich müsste es mit IDENTISCH() auch funktionieren. Da hat sich wohl ein Bug eingeschlichen.

Nebenbei: Wenn man die Formatierung in Spalte A im Zellformatierungsdialog einstellt, und in der "großen" Formel die Funktion WOCHENTAG() benutzt, statt mit Tageskürzeln zu vergleichen, wird es noch einfacher, und die Rechenblätter sind dann sogar international anwendbar.
Die zusätzlichen Varianten sind hier zu finden.

Beim letzetn Tag jedes Monats (auch wegen Schaltjahr) könnte man mit TAGEIMMONAT() eine Vereinfachung erzielen.

===Bearbeitung1 2019-01-03 13:55 CET===
Hier der im Kommentar angekündigte Anhang.
Für den eigenen Gebrauch würde ich allerdings vorziehen, das ganze Jahr auf einem Blatt zu führen, und evtl für Ausdrucke und dgl. ein "Prettyprint-Sheet" machen, indem ein Monat -oder was immer- als Auszug erzeugt wird. Das kann man mit Formeln machen wenn's nicht gleich um tausende Zeile geht, oder evtl. mit einem der Filter-Werkzeuge. (Oder mit "Pivot-Tabelle" je nach dem?)

Bearbeiten Melden löschen Link mehr

Kommentare

Hallo und vielen Dank, das war zur Sache wirklich hilfreich und darüber hinaus noch ungemein lehrreich.

Da am letzten Tag des Monats zusätzlich Formatierungen dran hängen, habe ich diese fest eingestellt und beim einzig variablen Punkt am 29. Februar mit WENN(ISTSCHALTJAHR($B$32)=0;"";WENN(ISTZAHL(VERGLEICH(B33;$Januar.$U$5:$Januar.$U$40;0));"Feiertag";WENN(WOCHENTAG(B33;2)>5;$Januar.$U$2;""))) borge ich mir das Datum aus der vorgehenende Zeile.

Habe die Datei final angepasst und gebe sie gerne zur weiteren Nutzung frei: Zeiterfassung_blanko.ots

Thomas Otte Gravatar-BildThomas Otte ( 2019-01-03 13:39:18 +0100 )Bearbeiten

(Kommentare lassen leider keine Anhänge zu. Du kannst dein Ergebnis aber entweder in einer eigenen Antwort, oder in einer Art Fußnote zu deiner Frage per "Bearbeiten" als Anhang platzieren.)
Ich habe gestern auch noch eine weitere Variante hergestellt. Da lasse ich aber bei den kürzeren Monaten leere Reihen (nur Formeln!) für die wegfallenden Tage. Ich mag sowas eh' gerne deutlich sehen.
Ich hänge das jetzt mal zusätzlich bei meiner Antwort an.
Übrigens: Mein UI und "locale" sind immer auf "en-UK" gestellt, und als Dokumentsprache wähle ich Esperanto (obwohl ich das nicht kann). So vermeide ich die aufgedringlichen Voreinstellungen für "de", die ich sehr lästig finde (insbes. das Datumsformat - aber auch Funktionsnamen).

Lupp Gravatar-BildLupp ( 2019-01-03 13:53:25 +0100 )Bearbeiten
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2019-01-02 10:18:47 +0100

Angesehen: 16 Mal

Aktualisiert: Jan 03