Omzetten van werkbladformule naar VBA code

Status
Niet open voor verdere reacties.

Hampert

Gebruiker
Lid geworden
11 nov 2009
Berichten
63
Hallo Forummers,

Ik zit al een tijdje met het volgende te stoeien maar het wil me niet lukken.
Ik heb de onderstaande werkbladformule ( komt uit cel F4 van blad Opkomst tabel) in het Vb bestand en wil deze via VBA variable in bereik maken.

Code:
=ALS($A4<>"    ";SOM(
SOMPRODUCT(('Aanwezig _ Afmeldingen'!$C$1:$Z$1="wo")*('Aanwezig _ Afmeldingen'!$C$2:$Z$2<=NU())*('Aanwezig _ Afmeldingen'!$C4:$Z4="x"));
SOMPRODUCT(('Aanwezig _ Afmeldingen'!$C$1:$Z$1="vr")*('Aanwezig _ Afmeldingen'!$C$2:$Z$2<=NU())*('Aanwezig _ Afmeldingen'!$C4:$Z4="x"));
SOMPRODUCT(('Aanwezig _ Afmeldingen'!$C$1:$Z$1="wo")*('Aanwezig _ Afmeldingen'!$C$2:$Z$2<=NU())*('Aanwezig _ Afmeldingen'!$C4:$Z4="xb"));
SOMPRODUCT(('Aanwezig _ Afmeldingen'!$C$1:$Z$1="vr")*('Aanwezig _ Afmeldingen'!$C$2:$Z$2<=NU())*('Aanwezig _ Afmeldingen'!$C4:$Z4="xb")));"")
Mijn vraag is hoe kan kan ik met VBA een zelfde berekening laten doen met de bereiken $C$1 en $C4 als variabele gegevens.

Waarom wil ik dit realiseren? In het vb bestand wil ik op het blad "Basisrecht" het opkomstpercentage van een speler hebben over de in cel A3 aangegeven aantal weken( is gelijk aan cel C3 het aantal trainingen) vanaf de in C2 aangegeven datum. Deze moet dan achter de juiste naam in kolom C komen te staan. De bovenstaande formule gebruik ik om het percentage te berekenen over de gehele periode vanaf begin tot datum C2. Deze staat in kolom D.

Ik hoop dat het verhaal een beetje duidelijk is.

Grt Harm

Bekijk bijlage Vb Absentielijst.rar
 
Laatst bewerkt:
Hier in ieder geval een verkorte versie van jouw formule.
Ik moet er op tijd weer af, dus geen Vba code van mij meer.
Code:
=ALS($A4<>"    ";SOMPRODUCT(('Aanwezig _ Afmeldingen'!$C$1:$Z$1<>"")*('Aanwezig _ Afmeldingen'!$C$2:$Z$2<=NU())*('Aanwezig _ Afmeldingen'!$C4:$Z4<>""))-SOMPRODUCT(('Aanwezig _ Afmeldingen'!$C$1:$Z$1<>"")*('Aanwezig _ Afmeldingen'!$C$2:$Z$2<=NU())*('Aanwezig _ Afmeldingen'!$C4:$Z4={"A"\"Ab"\"Az"\"v"\"No"}));"")
 
Ik heb het bestand getest alleen kom ik nu tot de ontdekking dat de wijziging van elsendoorn2134 geen rekening houd met de datum.
Het bestand mag alleen de waardes berekenen tot en met de dag dat het bestand bewerkt wordt. in de oude formules " NU()"


ik heb het zelf getracht op te lossen alleen krijg ik nu
Fout 6 overloop.

kan iemand mij hier een oplossing voor geven.
 
Hoi Alle,

Ik heb het allemaal opgelost.

@ elsendoorn2134 ik heb je veranderingen in het bestandje geoptimaliseerd.

De start vraag heb ik opgelost met onderstaande ( misschien wel niet proffesionele) code. En wat aanpassingen in de andere bladen.
Code:
For e = 4 To 20
            If Cells(e, "A") <> "" Then
                    For Each mycell In Blad5.Range(Blad5.Cells(e, a - (c * 3)), Blad5.Cells(e, a - 1))
                        g = g + 1
                        If mycell.Value = "x" Or mycell.Value = "xb" Then f = f + 1
                    Next mycell
                    
                    For Each myseccell In Blad5.Range(Blad5.Cells(1, a - (c * 3)), Blad5.Cells(1, a - 1))
                        If myseccell.Value = "WD" Then g = g - 1
                    Next myseccell

                    For Each my1cell In Blad5.Range(Blad5.Cells(e, 3), Blad5.Cells(e, a - 1))
                        i = i + 1
                        If my1cell.Value = "x" Or my1cell.Value = "xb" Then h = h + 1
                    Next my1cell
                    
                    For Each my2cell In Blad5.Range(Blad5.Cells(1, 3), Blad5.Cells(1, a - 1))
                        If my2cell.Value = "WD" Or my2cell.Value = "NB" Then i = i - 1
                    Next my2cell

               Cells(e, Target.Column) = f / g
               Cells(e, Target.Column + 1) = h / i
                f = 0
                g = 0
                h = 0
                i = 0
                
                
            End If
        Next e

allemaal bedankt voor het mee denken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan