Som van meerdere tabbladen

28 oktober 2014 | onderwerpen: excel, vba, visual basic, functie

Op LinkedIn verscheen een vraag over een som van meerdere tabbladen.

“Ik wil in meerdere tabbladen cel q4 sommeren. Dit lukt met de formule =SOM(‘===>>>:<<<==='!Q4).
Hierbij is ===>>> het eerste en <<<=== het laatste tabblad. De tabbladen hiertussen worden geteld.
Nu wil ik de verwijzing Q4 variabel maken met verticaal zoeken (afhankelijk van maand en jaartal moet worden verwezen naar andere cel). Ik heb dit geprobeerd met de formule INDIRECT en ook met TEKST.SAMENVOEGEN. Geen van beide geeft het gewenste resultaat.”

De functie INDIRECT werkt bij deze somfunctie inderdaad niet.

Oplossing met functie

Met een somfunctie is een flexibele totaaltelling met een zelf toegevoegde functie mogelijk. Zet daarvoor onderstaande code in een module (Alt-F11) in het bestand. De formule die daarbij hoort is:

=SomSheets(cel1;cel2;cel3)

Hierin verwijzen de cellen 1, 2 en 3 naar:

  • cel1: naam eerste tabblad dat in de berekening moet worden meegenomen
  • cel2: naam laatste tabblad dat in de berekening moet worden meegenomen
  • cel3: naam cel waarvan de inhoud moet worden opgeteld

In A1 staat dan de naam van het eerste blad (in het voorbeeld ===>>>), in cel A2 de naam van het laatste blad (<<<===) en in cel A3 de naam van de cel (Q4). Cel A3 kun je dan laten verwijzen naar andere cellen.

Public Function SomSheets(sh1 As String, sh2 As String, cl As String) As Double
Dim a As Integer, x As Integer, y As Integer
x = Sheets(sh1).Index
y = Sheets(sh2).Index
SomSheets = 0
For a = x To y
SomSheets = Sheets(a).Range(cl).Value + SomSheets
Next
End Function