• 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.

cellen uit verschillende tabbladen optellen

Status
Niet open voor verdere reacties.

ekeiram

Gebruiker
Lid geworden
16 jun 2006
Berichten
30
beste allen,

Hopelijk dat jullie mij kunnen helpen met het volgende probleem:

een werkbook heeft ongeveer 30 verschillende tabbladen, op elk tabblad worden de scores per leverancier bepaald. Deze scores kunnen rood, geel of groen zijn. Door middel van een countif functie worden deze scores opgeteld in cel f3:5. Nu zou ik graag van een werkbook een totaal score willen weten, dus hoeveel rode, gele en groene zijn er totaal in het complete workbook.

Nu heb ik een macro opgenomen dat hij voor de verschillende sheets de aantallen optelt. Echter dit is gemaakt door te klikken op de verschillende scores in het voorbeeld bestand. In het echte bestand zou ik dit graag met een macro doen omdat de cellen waar het over gaat behoorlijk verstopt zitten achter allerlei grafieken, ander issue is dat de namen van de tabbladen allemaal verschillend zijn (levanciersnamen) en hier dus niet een 'makkelijke' 1/2/3 van is te maken

onderstaand de code en bijgevoegd mijn test bestandje
Code:
Sub test()
'
' test Macro
'

'
    Sheets("Sheet2").Select
    Range("F3").Select
    Sheets("Sheet1").Select
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!RC[5]+Sheet3!RC[5]+Sheet4!RC[5]"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "=Sheet2!RC[5]+Sheet3!RC[5]+Sheet4!RC[5]"
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "=Sheet2!RC[5]+Sheet3!RC[5]+Sheet4!RC[5]"
    Range("A6").Select
End Sub

hoop dat iemand hiermee kan helpen of wellicht een idee heeft om het op een andere manier te doen.

Dank alvast!
 
Laatst bewerkt:
Code:
Sub tst()
For Each sh In Sheets
    If Not sh.Name = "Sheet1" Then
        [Sheet1!C3] = [Sheet1!C3] + sh.Range("F3").Value
        [Sheet1!C4] = [Sheet1!C4] + sh.Range("F4").Value
        [Sheet1!C5] = [Sheet1!C5] + sh.Range("F5").Value
    End If
Next
End Sub
 
dank!

Wow het werkt, super bedankt!!

Heel gaaf dat het werkt, ben echt BLIJ:)
 
werkt toch niet helemaal

het werkt toch nog niet helemaal. Met bovenstaande code worden namelijk elke keer als de macro wordt gedraaid de nieuwe gegevens bij de oude gegevens opgeteld in plaats van overschreven.

Is hier wellicht ook een oplossing voor? Waarschijnlijk is het een hele simpele aanpassing in de macro, maar ik zie hem even niet :(

dank alvast!
 
Je vraag was dan ook enkel om alle cijfers van alle bladen op te tellen, niets meer niets minder. Wat je dus eigenlijk wil is dat bij iedere keer dat de code gedraaid wordt dat eerst de doelcellen leeg gemaakt worden alvorens terug de optelling te maken ???
Code:
Sub tst()
[Sheet1!C3:C5].ClearContents
For Each sh In Sheets
    If Not sh.Name = "Sheet1" Then
        [Sheet1!C3] = [Sheet1!C3] + sh.Range("F3").Value
        [Sheet1!C4] = [Sheet1!C4] + sh.Range("F4").Value
        [Sheet1!C5] = [Sheet1!C5] + sh.Range("F5").Value
    End If
Next
End Sub
 
Laatst bewerkt:
excuus dat mijn vraag niet duidelijk was, als ik het zo terug lees staat dat er inderdaad :(

Wat ik bedoel is inderdaad dat de doelcellen leeg worden gemaakt voordat de nieuwe aantallen er komen te staan. Er komen namelijk elke week nieuwe scores bij op de verschillende tabbladen, uiteindelijk wil ik de totaalscore op sheet1 hebben staan. Deze zal dus elke week een x aantal meer zijn.

bijvoorbeeld week 1 geeft 10 groen, 4 geel, 1 rood.
Er komt overal 1 nieuwe score bij waardoor het zou moeten worden groen 11, geel 5, rood 2.
Echter hij geeft groen 21, 9 geel en 3 rood (= oude + ( oude + nieuwe) )
 
opgelost

gevonden :)

mijn dank is groot!

Code:
Sub totaalscore()

Range("A3:A5").Select
    Selection.ClearContents
    
For Each sh In Sheets
    If Not sh.Name = "Sheet1" Then
        [Sheet1!A3] = [Sheet1!A3] + sh.Range("F3").Value
        [Sheet1!A4] = [Sheet1!A4] + sh.Range("F4").Value
        [Sheet1!A5] = [Sheet1!A5] + sh.Range("F5").Value
    End If
Next

End Sub
 
Vermijd Select en Selectionin je code, bekijk de code in mijn Post#6 en vergelijk. Vergeet ook niet de bladnaam bij te voegen anders kan het resultaat wel eens verkeerd beïnvloed worden
 
het is inderdaad meer afgekaderd op jou manier en minder fout gevoelig. Dank je wel, heb weer een boel geleerd!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan