Excel voor loonberekeningen

Module 2 — Dienstbetrekking & Loonberekening

XLOOKUP voor heffingstabellen, IF/AND voor loonheffingskorting en automatisch nettoloon berekenen

Concepts

Van handmatig opzoeken naar XLOOKUP

Bij VGS berekent Karin elke maand het nettoloon van 8 medewerkers. Voor elke medewerker moet ze de juiste loonheffing uit de tabel halen — afhankelijk van het loon, het tijdvak en of de medewerker loonheffingskorting toepast. Handmatig opzoeken in de papieren tabel kost tijd en is foutgevoelig. Met **XLOOKUP** automatiseert Karin dit volledig.

XLOOKUP | Opzoeken
- Zoekt een waarde in een kolom
- Geeft de overeenkomstige waarde terug
- Flexibeler dan VLOOKUP
---
IF / ALS | Logica
- Test een voorwaarde
- Geeft waarde A of waarde B terug
- Onmisbaar voor ja/nee-situaties
---
AND / EN | Logica
- Alle voorwaarden moeten waar zijn
- Combineer met IF voor complexe regels
- Handig bij meerdere criteria

Heffingstabellenschema in Excel bouwen

De loonheffingstabellen zijn gepubliceerd door de Belastingdienst. In Excel maak je een vereenvoudigde opzoektabel: een bereik met loonschijven en bijbehorende heffingsbedragen. Karin gebruikt de maandtabel voor witte lonen.

Tabblad: Heffingstabel

Kolom A: VanAf (grondslag loonheffingen, maandbedrag)
Kolom B: TotAan
Kolom C: LhMetKorting   (loonheffing mét loonheffingskorting)
Kolom D: LhZonderKorting (loonheffing zonder loonheffingskorting)

Voorbeelddata (indicatief, gebruik actuele tabel):
VanAf    | TotAan  | LhMetKorting | LhZonderKorting
0        | 900     | 0            | 135
900      | 1100    | 45           | 198
1100     | 1400    | 87           | 280
1400     | 1750    | 156          | 385
1750     | 2100    | 248          | 504
2100     | 2500    | 380          | 650
2500     | 3000    | 560          | 870
3000     | 3500    | 740          | 1085
3500     | 4200    | 960          | 1360
4200     | 5000    | 1240         | 1700
5000     | 99999   | 1640         | 2200

> EXAMTIP: In de echte praktijk gebruik je de exacte tabelbedragen van de Belastingdienst. In een oefenomgeving volstaan indicatieve bedragen om de structuur te begrijpen. Het gaat erom dat je de opzoeklogica beheerst.

XLOOKUP: de syntaxis

XLOOKUP vervangt de oudere VLOOKUP en is veel flexibeler:

=XLOOKUP(zoekwaarde; zoekbereik; resultaatbereik; [indien niet gevonden]; [zoektype])

Uitleg parameters:
- zoekwaarde: wat zoek je op? (de grondslag loonheffingen)
- zoekbereik: waarin zoek je? (kolom A van de heffingstabel)
- resultaatbereik: wat wil je teruggeven? (kolom C of D)
- indien niet gevonden: wat als er geen match is? (optioneel)
- zoektype: 0 = exact, -1 = kleiner dan of gelijk aan (voor bereiken)

Voorbeeld voor medewerker met grondslag €3.072:
=XLOOKUP(3072; Heffingstabel[VanAf]; Heffingstabel[LhMetKorting]; "Niet gevonden"; -1)
→ Zoekt de dichtstbijzijnde waarde die kleiner is dan of gelijk aan 3072
→ Vindt schijf 3000–3500, geeft LhMetKorting terug

IF en AND voor loonheffingskorting

Niet alle medewerkers passen de loonheffingskorting toe. Joris de Bruin bij VGS heeft loonheffingskorting uitgeschakeld. Een IF-formule kiest automatisch de juiste kolom:

=ALS([@LhKorting]="Ja";
  XLOOKUP([@Grondslag]; Heffingstabel[VanAf]; Heffingstabel[LhMetKorting]; 0; -1);
  XLOOKUP([@Grondslag]; Heffingstabel[VanAf]; Heffingstabel[LhZonderKorting]; 0; -1))

Uitleg:
- Als LhKorting = "Ja" → gebruik de kolom LhMetKorting
- Anders → gebruik LhZonderKorting

AND werkt goed als je meerdere voorwaarden combineert. Stel dat de heffingskorting alleen van toepassing is als de medewerker een vaste aanstelling heeft én loonheffingskorting heeft aangevraagd:

=ALS(EN([@LhKorting]="Ja"; [@Contract]="Onbepaald");
  XLOOKUP([@Grondslag]; Heffingstabel[VanAf]; Heffingstabel[LhMetKorting]; 0; -1);
  XLOOKUP([@Grondslag]; Heffingstabel[VanAf]; Heffingstabel[LhZonderKorting]; 0; -1))

> EXAMTIP: De loonheffingskorting mag de werknemer maar bij één werkgever tegelijk toepassen. Als een medewerker twee banen heeft, geldt de korting maar bij één ervan. Dit controleer je bij indiensttreding via de opgaaf gegevens voor de loonheffingen.

Automatisch nettoloon berekenen

Met de heffingstabel en IF/XLOOKUP kun je nu het volledige loonberekeningsmodel bouwen op een tabblad **Loonberekening**:

Kolommen in de loonberekeningentabel:

A: MedewerkerID
B: Naam
C: BrutoloonMnd       (link naar personeelslijst)
D: Pensioenpremie     (bijv. 4% van brutoloon)
E: Grondslag          =[@BrutoloonMnd]-[@Pensioenpremie]
F: LhKorting          (link naar personeelslijst)
G: LoonheffingBedrag  =ALS([@LhKorting]="Ja";
                         XLOOKUP([@Grondslag]; Heffingstabel[VanAf]; Heffingstabel[LhMetKorting]; 0; -1);
                         XLOOKUP([@Grondslag]; Heffingstabel[VanAf]; Heffingstabel[LhZonderKorting]; 0; -1))
H: NettoLoon          =[@BrutoloonMnd]-[@Pensioenpremie]-[@LoonheffingBedrag]

Pensioenpremie als percentage

De pensioenpremie varieert per medewerker of cao. Je berekent deze als percentage van het brutoloon:

Pensioenpremie werknemer (4% van brutoloon):
=[@BrutoloonMnd]*0,04

Als het percentage per medewerker verschilt, voeg je een kolom PensioenPct toe:
=[@BrutoloonMnd]*[@PensioenPct]

---

Missie

STORY: Het is eind van de maand bij Van Ginkel Solutions BV. Karin heeft alle brutolonen klaar staan in de personeelslijst. Nu moet ze voor elke medewerker de loonheffing berekenen en het nettoloon vaststellen. Ze wil nooit meer handmatig in de tabel zoeken — Excel doet het voortaan automatisch.

Stap 1 — Heffingstabel invoeren

Maak een tabblad **Heffingstabel** in je VGS-loonadministratie.xlsx (of een nieuw bestand).

Maak de tabel aan met deze kolommen en zet er een Excel-Tabel van (Ctrl+T), noem hem **HeffTabel**:

Kolom A (VanAf) | Kolom B (TotAan) | Kolom C (LhMetKorting) | Kolom D (LhZonderKorting)

Vul minimaal 8 schijven in, oplopend van 0 tot ~5000+ euro.
Gebruik indicatieve bedragen of de actuele Belastingdienst-tabel.
Zorg dat de VanAf-waarden oplopend zijn gesorteerd — XLOOKUP werkt dan correct met zoektype -1.

Stap 2 — Loonberekeningentabel bouwen

Maak een tabblad **Loonberekening**. Maak een tabel (noem hem **Loonber**) met de volgende kolommen:

A: MedewerkerID
B: Naam
C: BrutoloonMnd
D: PensioenPct     (bijv. 4% = 0,04)
E: Pensioenpremie  =[@BrutoloonMnd]*[@PensioenPct]
F: Grondslag       =[@BrutoloonMnd]-[@Pensioenpremie]
G: LhKorting       (Ja of Nee)
H: LoonheffingBedrag
I: NettoLoon

Vul in kolom H de XLOOKUP-formule in met IF voor de loonheffingskorting:

Kolom H formule:
=ALS([@LhKorting]="Ja";
  XLOOKUP([@Grondslag]; HeffTabel[VanAf]; HeffTabel[LhMetKorting]; 0; -1);
  XLOOKUP([@Grondslag]; HeffTabel[VanAf]; HeffTabel[LhZonderKorting]; 0; -1))

Kolom I formule:
=[@BrutoloonMnd]-[@Pensioenpremie]-[@LoonheffingBedrag]

Stap 3 — Alle 8 medewerkers invullen en controleren

Voer de gegevens van alle 8 VGS-medewerkers in. Gebruik dezelfde brutolonen als in de personeelslijst.

Controleer voor elke medewerker:
- Is de grondslag correct (brutoloon minus pensioenpremie)?
- Wordt de juiste heffingskolom gebruikt (met of zonder korting)?
- Is het nettoloon positief en logisch (ruwweg 60-75% van brutoloon)?

Let op Joris de Bruin (LhKorting = Nee):
→ Zijn heffing moet hoger zijn dan bij een medewerker met gelijk loon maar mét korting
→ Zijn nettoloon is daardoor lager

Voeg onderaan toe:
Totaal brutoloon:      =SOM(Loonber[BrutoloonMnd])
Totaal loonheffing:    =SOM(Loonber[LoonheffingBedrag])
Totaal netto uitbetaald: =SOM(Loonber[NettoLoon])

Sla op als **VGS-loonberekening.xlsx**.