VBA Gele cell tellen..

Status
Niet open voor verdere reacties.

MEradus

Gebruiker
Lid geworden
25 nov 2012
Berichten
287
Goedemiddag,

De volgende vraag heb ik al een keer in een andere versie gesteld dus ik hoop dat ik hem opnieuw mag stellen.

Op het werk moet ik regelmatig rapportages maken en dankzij hulp van hier bespaar ik al heel veel tijd.
Nu zou ik graag het volgende nog toe willen passen.

In het voorbeeld dat ik mee stuur zie je een gedeelte van mijn rapportage. Het gedeelte onder "Ritten" ( Voor het gemak even groen gemaakt, is normaal geel ) staat normaal niets.
Maar hier moet eigenlijk in komen te staan hoeveel "ND01, ND02, ND03, ND04, ND05v, ND06, NDCVV & VLO" er in het geel staat. ( Na rit tijd ) In deze volgorde naar beneden.
Dit heb ik nu handmatig gedaan met de volgende formule:
Code:
=AANTALLEN.ALS(L$147:L$163;"ND01";S$147:S$163;"na rittijd")
. Dit zou ik uiteraard het liefst met VBA willen doen, dit scheelt weer.
Alleen met een formule kan ik geen 'gekleurde' cel aangeven. Is er ook een manier om genoemde code te gebruiken, maar dat deze kijkt naar de gele cellen? (Of naar "na rittijd"?)

De code/functie die een hele tijd geleden gekregen heb was
Code:
'Function ChkColor(ByVal Target As Range, ClrCode As Long) As Boolean
'If Target.Interior.Color = ClrCode Then ChkColor = True
'End Function
Maar deze krijg ik niet
werkend.

Ik hoop dat iemand een oplossing voor mij heeft. ( De aantallen zijn dynamisch! )Bekijk bijlage HelpmijKleur.xlsx
 
Laatst bewerkt:
Laatst bewerkt:
Ik begrijp het voorbeeldje en de berekeningen in het voorbeeldje niet.

Maar om antwoord te geven op de vraag.

Om te tellen met kleuren is niet zo moeilijk. Dit heb ik maar op blad1 in het voorbeeldje gezet. Alleen de kleuren tellen:
Code:
Function VenA(R As Range) As Long
For Each cl In R.Cells
    If ActiveCell.Interior.Color = cl.Interior.Color Then VenA = VenA + 1
Next cl
End Function

Kleuren tellen met een voorwaarde
Code:
Function VenA1(R As Range, Vw1) As Long
For Each cl In R.Cells
      If ActiveCell.Interior.Color = cl.Interior.Color And cl = Vw1 Then VenA1 = VenA1 + 1
Next cl
End Function
 

Bijlagen

  • HelpmijKleur.xlsb
    20,9 KB · Weergaven: 30
Hoi VenA

Dit is niet helemaal wat ik bedoel.

Zoals je in het voorbeeld bestand ziet staan is een rijtje met als titel "Ritten". Deze heb ik voor het gemak even groen gemaakt.
Dan zie je in kolom L allerlei codes staan ND01, ND02 enz. Als je het filter in het bestand uitzet zal je zien dat alle codes waar achter (Kolom S) Na "rittijd" staat Geel zijn. Nu is het de bedoeling dat ik per code ND01..... Onder elkaar te zien krijg hoeveel dit er zijn. De aantal gele cellen en dus ook de aantal codes zijn dynamisch. Ik hoop dat mijn uitleg het bestand wat begrijpelijker maakt en dat je me alsnog kan helpen.
 
Misschien moet ik het toch anders doen en van de kleur afstappen......

Zou het vba technisch mogelijk zijn om deze formule
Code:
=AANTALLEN.ALS(L$147:L$163;"ND01";S$147:S$163;"na rittijd")
dynamisch te maken en deze per code (zie voorbeeld bestand) dus de range verschilt elke keer. De "range" begint wel altijd op dezelfde plek "offset(-2, -4) voor de 1e formule en dan -3, -4 enz. De 2e is de andere kant op (-2, 3) enz.

Ik hoop dat deze uitleg in combinatie met de formule duidelijk genoeg is om mij te kunnen helpen.
 
Misschien moet ik het toch anders doen en van de kleur afstappen......
een zeer wijs besluit.:D

Ga eens zoeken op draaitabellen als tip van mijn kant.;) Zie blad2.
 

Bijlagen

  • HelpmijKleur.xlsb
    24,9 KB · Weergaven: 27
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan