Lohnberechnungsformular (Vorlage)

In Startups ist die Lohnbuchhaltung (neben der Buchhaltung) oft ein leidiges Thema. Sobald erste Mitarbeiter eingestellt werden, muss eine Lohnbuchhaltung geführt werden und Mitarbeiter haben Anrecht auf eine Lohnabrechnung (gem. Art. 323b OR - Schweizerisches Obligationenrecht).

Art. 323b - 3. Lohnsicherung
1 Der Geldlohn ist dem Arbeitnehmer in gesetzlicher Währung innert der Arbeitszeit auszurichten, sofern nichts anderes verabredet oder üblich ist; dem Arbeitnehmer ist eine schriftliche Abrechnung zu übergeben.

Die Beiträge für AHV/IV/EO, FAK und ALV sind pro Jahr vom Bund (in Prozentsätzen) festgelegt. Die Beiträge für BVG werden von der Pensionskasse (2. Säule) anhand dem Bruttolohn berechnet. Die richtigen Beiträge müssen direkt von der jeweiligen Beitragsübersicht der Pensionskasse entnommen werden.

Lohnberechnungsformular

Um den Startups diese Arbeit zu erleichtern, haben wir ein Lohnberechnungsformular erstellt. Nach dem Abfüllen einiger Zellen berechnet das Excel automatisch die richtigen Beiträge und zählt diese in einem Total über die gesamte Firma zusammen. Das Lohnberechnungsformular besteht aus verschiedenen Bausteinen (Tabellenblätter), wo verschiedene Informationen aufgezeigt und/oder abgefüllt werden können/müssen. Diese werden nachfolgend erläutert. Am Ende dieses Beitrags findest Du den Download-Link, um die Vorlage herunterzuladen.

Im Tabellenblatt "Total" werden alle Sozialversicherungsbeiträge und BVG-Beiträge zusammengerechnet. So erhält man eine Übersicht über die fälligen Beiträge pro Monat aller Mitarbeiter. In diesem Tabellenblatt sollte grundsätzlich nichts angepasst werden müssen.

Im Tabellenblatt "Personalliste" werden die Mitarbeiter erfasst. Hier ist wichtig, dass die Spalte "Pensum" und "Bruttolohn Monat bei 100%" ausgefüllt sind. Aus diesen beiden Spalten wird der effektive Bruttolohn pro Monat und der Bruttolohn pro Jahr berrechnet. Die Tabellenblätter "MA" und "Parameter" bedienen sich ebenfalls an diesen Informationen.

Tabellenblatt "Parameter"

Parameter

Unter dem Tabellenblatt "Parameter" werden die Prozentbeiträge für AHV/IV/EO, FAK, ALV und VK (nur Arbeitgeber) eingetragen. Ebenfalls müssen hier die BVG-Beiträge aus der Beitragsübersicht der Pensionskasse übertragen werden. Die orange-markierten Felder (im Beispiel CHF 170.00) müssen zwingend mit den eigenen BVG-Beiträgen angepasst werden. Die grau-markierten Felder (%-Sätze) müssen jährlich überprüft und bei Änderungen vom Bund entsprechend angepasst werden. Die Informationen zum Pensum und Bruttolohn kommen aus dem Tabellenblatt "Personallisten".

Tabellenblatt Mitarbeiter (MA1)

Mitarbeitertabellenblatt

Das Mitarbeitertabellenblatt benötigt spezifische Anpassungen nach Mitarbeiter-Eintrittsdatum, in jeweils 3 verschiedenen Zeilen (Bruttolohn, BVG Arbeitgeber und BVG Arbeitnehmer). Dazu haben wir  verschiedene Beispiele mit verschiedenen Eintrittsdaten erstellt (siehe verschiedene Tabellenblätter MA1 - MA3). Die Zeile Bruttolohn, BVG Arbeitgeber (AG) und BVG Arbeitnehmer (AN) haben folgende Funktionen hinterlegt:

Zeile Bruttolohn:

=VRUNDEN(Parameter!$D$4/13;0.05)

Diese Funktion holt die Informationen aus dem Tabellenblatt "Parameter" aus der Zelle D4, was dem Bruttolohn des Mitarbeiter 1 (MA1) entspricht. Dieser Betrag wird durch 13 (13 Monatslöhne) geteilt und auf 5 Rappen (0.05) gerundet. Die Zelle muss pro Mitarbeiter immer spezifisch erstellt werden, also Mitarbeiter 1 hat diese Informationen im Tabellenblatt "Parameter" unter D4 hinterlegt, für Mitarbeiter 2 wäre es die Zelle E4, Mitarbeiter 3 F4, usw. In Monaten wo der Mitarbeiter noch nicht für das Unternehmen gearbeitet hat, können die Zellen einfach auf 0 gesetzt werden (z.B. Eintrittsdatum 01.06.202; Zellen für Januar - Mai auf 0 setzen).

Zeile BVG AG:

=VRUNDEN(Parameter!$D$11;0.05)

Diese Funktion bedient sich an der Zelle D11 aus dem Tabellenblatt "Parameter" und rundet diese auf 5 Rappen (0.05) genau. $D$11 muss für jeden Mitarbeiter fortlaufend neu gesetzt werden, für Mitarbeiter2 wäre die korrekte Zelle $E$11. In Monaten wo der Mitarbeiter noch nicht für das Unternehmen gearbeitet hat, können die Zellen einfach auf 0 gesetzt werden (z.B. Eintrittsdatum 01.06.202; Zellen für Januar - Mai auf 0 setzen).

Zeile BVG AN

=VRUNDEN(Parameter!$D$17;0.05)

Diese Funktion ist gleich aufgebaut wie die Funktion für die Zeile BVG AG, nur dass diese sich an den Informationen BVG AN (Arbeitnehmer) bedient.

Wichtig zu beachten

Sofern diese Punkte beachtet werden, kann bei der Verwendung des Lohnberechnungsformular wenig schief gehen.

  • Die Reihenfolge beim Ausfüllen des Excels sollte idealerweise in der Reihenfolge: Personalliste, Parameter, Mitarbeiter geschehen.
  • Unter dem Tabellenblatt "Personalliste" muss immer Bruttolohn / Monat bei 100% und das entsprechende Pensum erfasst sein.
  • Unter dem Tabellenblatt "Parameter" müssen die eigenen BVG Beiträge pro Mitarbeiter hinterlegt werden, diese erhalten Sie von Ihrer Pensionskasse (2. Säule)
  • Unter dem Tabellenblatt "Parameter"sollten die %-Sätze einmal pro Jahr auf Richtigkeit überprüft werden.
  • Sicherstellen, dass die Funktionen im Tabellenblatt "Mitarbeiter (MA)" richtig gesetzt sind auf den Zeilen Bruttolohn, BVG AG und BVG AN.
  • Im Tabellenblatt "Mitarbeiter (MA)" die Zeilen Bruttolohn, BVG AG und BVG AN auf 0 setzen, sofern der Mitarbeiter in diesen Monaten noch nicht für das Unternehmen tätig war.
  • Die Beiträge sollten in jedem Fall mit zuverlässigen Quellen gegengeprüft werden (z.B. SVA Kt. Zürich)
  • Die Tabellenblätter "Mitarbeiter (MA)" müssen zwingend nebeneinander aufgereiht werden, ansonsten funktioniert die Summe im Tabellenblatt "Total" über mehrere Tabellenblätter nicht.

Excelblog übernimmt für die Verwendung des Lohnberechnungsformular keine Haftung. Die Verwendung dieses Formular ist für die Schweiz gedacht.

Download: Lohnbuchhaltung_2020

Gruppierung reduzieren / erweitern auf gesperrtem Tabellenblatt

Gruppierungen werden in Excel-Berichten eingesetzt, um bestimmte Inhalte transparent anzeigen oder ausblenden zu lassen. Es zeigt deutet dem Leser an, dass noch weitere Informationen in der Tabelle vorhanden sind, die möglicherweise eingesehen werden sollten. Im Unterschied dazu gibt es die Möglichkeit, Zeilen oder Spalten komplett auszublenden. Dort erfordert es vom Leser mehr Aufmerksamkeit, um zu bemerken, dass Inhalte verborgen sind. Man bemerkt möglicherweise einen sprunghaften Anstieg in den Zeilennummerierungen oder den Spalten. Für welche Variante man sich entscheidet, ist natürlich situativ.

Worum es allerdings in diesem Blog im Spezifischen geht: Hast Du einmal versucht, Gruppierungen in einem geschützten und gesperrten Tabellenblatt auf- oder einzuklappen? Das ist nicht möglich und die Rechte können nicht entsprechend vergeben werden. Es sei denn, man wendet zwei Zeilen VBA-Code an. Es wird die nachfolgende Fehlermeldung angezeigt:

ErrorGroupings

Hierfür gibt es zwei Möglichkeiten, die ich nachfolgend vorstelle: Eine Schaltfläche, mit welcher der Benutzer die +/- Symbole "aktiviert" oder dass das Makro direkt beim Öffnen der Datei ausgeführt wird. Für beide Lösungsansätze musst Du zunächst in die Makro-Umgebung wechseln (ALT + F11 oder mittels Rechtsklick auf ein Tabellenblatt → "Code anzeigen"). Auf der linken Seite findest Du Deine Tabelle wieder. Mit einem Rechtsklick auf kannst Du via Einfügen → Modul alles soweit vorbereiten, um Dein Makro einzurichten. Füge dann folgenden Code ein:

Sub GruppierungenErlauben()

Sheets("MeinTabellenblatt").Protect Password:="MeinPasswort", UserInterfaceOnly:=True
Sheets("MeinTabellenblatt").EnableOutlining = True

End Sub

Ersetze bitte "MeinTabellenblatt" mit dem Namen Deines Excel-Sheets und vergebe ein Passwort, mit dem der Schutz aufzuheben ist. Mit "UserInterfaceOnly" wird lediglich die Benutzereingabe eingeschränkt; ein Makro könnte nach wie vor Änderungen in den gesperrten Bereichen vornehmen. Durch die weitere Angabe "EnableOutlining" wird die Berechtigung erteilt, auf die Gruppierungen zuzugreifen - trotz Blattschutz. Um dem Benutzer im Tabellenblatt die Möglichkeit zu geben, die Funktion zu aktivieren, füge beispielsweise ein Textfeld ein. Mit einem Rechtsklick auf dieses Objekt findest Du die Option "Makro zuweisen", woraufhin Du das Makro "GruppierungenErlauben" dem "Button" zuweisen kannst.

Makro beim Öffnen der Datei ausführen

Meiner Meinung nach schöner gelöst ist es, wenn Du die Codezeilen direkt ausführst, wenn die Datei geöffnet wird. Um dies zu bewerkstelligen, füge nicht ein neues Modul ein, sondern navigiere in der VBA-Umgebung auf "DieseArbeitsmappe" (ThisWorkbook in Englisch). Füge dort den nachfolgenden Code ein (achte bitte auf die angepasste 1. Code-Zeile):

Private Sub Workbook_Open()

Sheets("MeinTabellenblatt").Protect Password:="MeinPasswort", UserInterfaceOnly:=True
Sheets("MeinTabellenblatt").EnableOutlining = True

End Sub

So wird der Code entsprechend ausgeführt, wenn das Excel-File geöffnet wird.

Bitte beachte, dass Du die Excel-Datei als Makrodatei (.xlsm) oder Binärdatei (.xlsb) abspeichern musst, damit die Makros enthalten bleiben.

Abhängige (dynamische) Drop-Down-Listen

In Formularen sind abhängige Drop-Down-Listen oftmals unabdingbar. Was bedeutet das? Wählt man im ersten Feld eine Oberkategorie "Obst" oder "Fleischwaren", dann sollen in einer zweiten Auswahlliste nur die entsprechenden Einträge zur Option stehen. Wir haben diese abhängigen Drop-Down-Listen bereits im Beitrag "Dropdown einer Dropdown-Liste erstellen - abhängige Dropdown" illustriert. Das funktioniert dann einwandfrei, wenn sich die Inhalte der Unterkategorien nicht ändern. Ansonsten ist es notwendig, die Bereiche (Namen) von "Obst" oder "Fleischwaren" den neuen Umständen entsprechend anzupassen (Bereich erweitern oder reduzieren). Es suggeriert also eine dynamische Drop-Down-Liste. Wie man einen solchen Namen (mit der Formel BEREICH.VERSCHIEBEN) anlegt, kannst Du in diesem Beitrag nachschlagen: Bereich eines Namens automatisch erweitern

Wir würden also alle Namen für die Drop-Down-Listen entsprechend anlegen, wie im Screenshot unten dargestellt (mit der Formel "BEREICH.VERSCHIEBEN", referenzierend auf das separate Blatt "Parameter"):

Namenslisten-Dynamisch

Wählt man im Anschluss im Formular die erste Option zu "Essen", sollte in der abhängigen Drop-Down-Liste dann die jeweilige Unterkategorie abrufbar sein. Dies ist jedoch nicht der Fall, die Auswahl-Liste lässt sich mit Klick auf den Erweiterungspfeil gar nicht erst aufrufen und anzeigen. Wie können wir also sowohl abhängige wie auch dynamische Drop-Down-Listen erstellen? Das Vorgehen zeige ich Dir nachfolgend Schritt für Schritt auf, lösche jedoch bitte im Namensmanager (Menüpunkt "Formeln" → "Namensmanager") allfällige bereits definierten Namen für Deine Drop-Down-Listen.

Abhängige, dynamische Drop-Down-Listen (Lösungsansatz)

Wir müssen die ursprünglichen Daten auf dem separaten Blatt "Parameter" also anders definieren, um jederzeit unsere Auswahl-Kriterien ergänzen und unmittelbar nachher im Formular abrufen können. Gehe dazu im Menüband auf das Register "Einfügen" und selektiere die Option "Tabelle". Du erstellst nun also eine Tabelle und wählst als erstes den Bereich "A1:A3" aus, um die Oberkategorie abzubilden. Falls Du die Zeile 1 inkludierst, wähle zudem "Tabelle hat Überschriften".

TabelleEinfuegenUndDefinieren

Wiederhole den Vorgang auch für die Unterkategorien "Fleischwaren" und "Obst".

Wenn Du nun in der Spalte A Fleischwaren und Obst markierst, siehst Du links oben im Namensfeld (normalerweise steht da die Zelle "A2" und so weiter) "Tabelle1" stehen. Der Name "Tabelle1" ist aktuell also stellvertretend für diesen Bereich. Klicke in dieses Namensfeld und überschreibe einfach "Tabelle1" mit "Essen" - bestätige mit der Enter-Taste. Du wirst in dem Namensfeld kurz etwas aufblinken sehen, danach steht allerdings wieder "Tabelle1" drin. Mache das nun auch für B2:B3 (=Tabelle2) und setze da den Namen "Fleischwaren" sowie für C2:C4 (=Tabelle3) und definiere da "Obst". Rufe nun erneut Deinen Namensmanager auf (Menüpunkt "Formeln" → "Namensmanager"). Dort siehst Du die Resultate entsprechend - beachte auch die Spalte "Bezieht sich auf", die auf die jeweilige Tabelle referenziert:

NamensmanagerTabellenReferenzen

Navigiere nun auf Dein effektives Formular. Wähle die Hauptkategorie (Essen) und versuche nun, Deine Unterkategorie (Drop-Down-Einstellung: =INDIREKT(B5) -- wobei B5 dem Feld mit Fleischwaren/Obst entspricht) kann nun korrekt aufgerufen werden:

FormularDynamischeDropDownUnterkategorie

Zuletzt kannst Du prüfen, ob Deine Listen auf dem Blatt "Parameter" tatsächlich dynamisch sind. Gib einfach einen neuen Begriff unterhalb ein, beispielsweise "Schweinefleisch" als zusätzliche Fleischware. Die Tabelle erweitert sich automatisch (Du siehst dies auch farblich) - und auf der Drop-Down-Liste im Formular kannst Du die neue Option ebenfalls gleich selektieren.