• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

macro optellen celwaarde met criteria en onbepaald aantal tabbladen

Status
Niet open voor verdere reacties.

bislande

Gebruiker
Lid geworden
10 jan 2013
Berichten
5
Ik ben geen macro specialist en zit met de volgende uitdaging:
Ik heb een onbepaald aantal tabbladen die tussen tabblad First en Last geplaatst worden. De namen van deze tabbladen zijn verschillend (vandaar First en Last om een bereik te kunnen maken). De opbouw is wel gelijk van elk tabblad.

Nu wil ik elk aanwezig tabblad (tussen First en Last) doorzoeken op drie criteria. Deze staan altijd in cellen A1, A2 en B1.

A1 = getal 1 t/m 12 (komt overeen met de maanden)
A2 = getal 2013 t/m 2020 (komt overeen met de jaren)
B1 = getal 100 t/m 999 (klantcode)

Indien aan een bepaalde criteria wordt voldaan, bijvoorbeeld januari 2013 met klantcode 100 (A1=1, A2=2013, B1=100) wil ik van alle tabbladen waarvoor deze criteria waar zijn de waarde van cel F50 optellen en de uitkomst in Tabblad Totaal plaatsen in cel C11. C11 geeft dus de totale omzet van klant 100 in Januari 2013. In cel C12 moet hetzelfde komen te staan maar dan voor februari, in C13 voor maart, etc.

Ik kan helaas niet het bestand uploaden (vertrouwelijk) maar ik denk dat het zo wel voldoende duidelijk is.

Alvast bedankt
 
Excel heeft daarvoor draaitabellen ontworpen.
Zet alle gegevens in 1 werkblad.
 
Ok, goed advies. Blijft de vraag: hoe kan ik met VBA de waarde van cel A1, A2 en B1 van alle aanwezige tabbladen tussen First en Last verzamelen op het tabblad Totaal waarbij steeds alle A1 waardes van de verschillende tabbladen netjes onder elkaar komen te staan in de kolom Maand, alle A2 waardes onder elkaar in de kolom Jaar en alle A3 waardes onder elkaar in de kolom klantcode. Ik neem aan dat er een command button geplaatst moet worden om het stukje code te activeren en de resultaten te actualiseren. Het aantal tabbladen tussen First en Last is immers dynamisch en kan elke dag wijzigen. Wie kan me aan een stukje code helpen?
 
Zet onderstaande code in een module.
Ga naar tabblad Totaal
Zet bijvoorbeeld in cel A2 de functie =SheetNummer("First"); je krijgt dan het nummer van het tabblad met de naam "First".
Zet daaronder, in cel A3, de formule =A2+1 (dit is het nummer van het eerste tabblad dat je wilt hebben)
Zet daarnaast, in cel B3, de formule =sheetoffset2($A3;"a1")
Kopieer deze formule naar rechts en nog een keer, en verander "a1" in "a2" resp. "b1" (dit zijn de cellen op de tabbladen die je wilt uitlezen)
Kopieer de regel A3 : D3 naar beneden door, zoveel als er tabbladen zijn en nog wat meer voor als er later tabbladen bijkomen.

Let op: ik weet niet of het goed gaat als je ook ergens een grafiekblad hebt.

Nu heb je de waarden bij elkaar en kun je er verder mee doen wat je wilt...


Code:
Function SheetNummer(x As String) As Integer
    Dim Wks As Worksheet, WksNum As Integer
    WksNum = 1
    For Each Wks In Application.Sheets
        If x = Wks.Name Then
            SheetNummer = WksNum
            Exit Function
        End If
        WksNum = WksNum + 1
    Next Wks
End Function

Function SHEETOFFSET2(nr%, Address)
'  Returns cell contents at Ref, in sheet offset
   Application.Volatile
   SHEETOFFSET2 = Worksheets(nr).Range(Address)
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan