Waarde toewijzen een zelfgeformuleerde variabel in excel vba

Status
Niet open voor verdere reacties.

dataswift

Nieuwe gebruiker
Lid geworden
15 jun 2015
Berichten
4
Hallo,

Ik ben een spreadsheet aan het maken voor mijn tennisteam en we zijn dit jaar nogal precies met onze statistieken dus ben ik met een iets geavanceerdere versie bezig nu, maar ik kom niet verder...

Mijn data blad werkt als volgt:

Naam, gegegeven1 t/m 15

Klaas,1,12,3,etc.
Joop,0,6,12,etc.

Ik wil m.b.v. VBA de namen en gegevens automatisch opslagen onder speler1, speler2, etc op volgorde van invoer. Hoe kan ik dit doen met een for each lus?

Dit is wat ik heb tot nu toe:

For each aantal in array(spelerslijst)

For X = 1 to aantal
speler = speler & x
!!"speler & x" = cells(x,y).value
"speler & x_geg1" = cells(x,y).value
etc, etc, t/m
"speler & x_geg15" = cells(x,y).vale
Next X

Next aantal


Hoe kan ik van 'naam & x' een variabele maken en een waarde geven?

Ik hoop dat jullie me kunnen helpen,

Hierbij de opzet van het excel bestand voor het geval dat ik me niet duidelijk maak: Bekijk bijlage Statistieken.xlsx

Alvast bedankt!

Tom

p.s. wat zou hier een passende titel voor zijn??
 
Laatst bewerkt:
Dag Tom,

Test het maar eens.
Code:
Sub hsv()
Dim sn, i As Long, j As Long, n As Long, x As Long
With Sheets("Speeldag1")
 sn = .Cells(1).CurrentRegion
ReDim arr(UBound(sn) * UBound(sn, 2), UBound(sn) * 3)
      For i = 2 To UBound(sn)
         n = 0
         arr(n, x) = "speler" & i - 1
         arr(n, x + 1) = sn(i, 1)
        For j = 2 To UBound(sn, 2)
            n = n + 1
            arr(n, x) = "speler" & i - 1 & "_" & sn(1, j)
            arr(n, x + 1) = sn(i, j)
        Next j
      x = x + 3
    Next i
 .Cells(15, 2).Resize(n+1, x) = arr
End With
End Sub

Graag ook codetags gebruiken als je code plaatst op het forum. #
 
Laatst bewerkt:
Top

Hallo Harry,

Ik zie je reactie nu pas. De notificatie e-mail in ongewenst beland. Bedankt voor de spoedige reactie, ik ga ermee aan de slag!

Wat bedoel je precies met een codetag?

Dank,

Tom
 
Kijk eens naar de 'opmaak' van jouw code, en die van Harry :). Als je code plaatst, typ dan [ code ] vóóraan de code (zonder de spaties en [ /code ] (ook weer zonder spaties) er achter. Dan staat de code netjes in de CODE tag.
 
Okay, got it! Dank OctaFish.

Volgende etappe. De code werkt super, Harry! Ik heb twee vragen, 1: hoe kan ik andere speeldagen invoegen en de data optellen? en 2: hoe neem ik de data mee naar een andere sub?

1. Ik ben nu verder gegaan met de tweede speeldag en wil de data optellen van speler1 t/m 6 en daarnaast "spelerx_Aantal Wedstrijden" eraan toevoegen. (E.g. Jeroen en Anthony hebben beiden maar één wedstrijd gespeeld en de rest twee.)

2. De volgende stap wordt de verwerking van data en voor overzicht werk ik vanuit één basis sub en meerdere functie subs. De sub 'hsv' is bijv. data ophalen en data verwerking wordt een volgende. De vraag is, hoe neem ik de variabelen en bijbehorende waardes mee naar een andere sub?

Dit is de opzet:
Code:
Sub Totaal()
 Call hsv(arr)
 Call Data_vewerking(arr)
End Sub

Private Sub hsv(arr)
Dim sn, i As Long, j As Long, n As Long, x As Long
For Each ws In Array("Speeldag1") ', "Speeldag2")
With Sheets(ws)
 sn = .Cells(1).CurrentRegion
ReDim arr(UBound(sn) * UBound(sn, 2), UBound(sn) * 3)
      For i = 2 To UBound(sn)
         n = 0
         arr(n, x) = "speler" & i - 1
         arr(n, x + 1) = sn(i, 1)
        For j = 2 To UBound(sn, 2)
            n = n + 1
            arr(n, x) = "speler" & i - 1 & "_" & sn(1, j)
            arr(n, x + 1) = sn(i, j)
        Next j
      x = x + 3
    Next i
End With
Next ws
Sheets("Verwerking").Cells(1, 1).Resize(n + 1, x) = arr
End Sub

Private Sub Data_verwerking(arr)

End Sub

Alvast bedankt!

Tom
 
Laat dat eens aan de hand van een voorbeeld zien.
De variabelen neem je mee door ze 'Public' te maken.
 
Sorry, was de bedoeling om het excel mee te sturen. Bij deze. Bekijk bijlage Statistieken.xlsm

De gedachte is om het aantal wedstrijden mee te nemen om een gemiddelde te tonen onder de 'ruwe' data. En vanuit daaruit, ik weet nog niet precies hoe, wil ik de speler met de hoogste of laagste getallen en in andere sheet tonen. Een soort van snel overzicht wie het meest gewonnen heeft in totaal en/of gemiddeld, hoogste/laagste percentage eerste service, etc.
 
Hier is een begin, maar totaal anders dan de vorige.
Elke speler wordt per speeldag in de array opgeteld.
Resultaat na het draaien van de code in het laatste tabblad.
 

Bijlagen

  • Statistieken 1.xlsm
    23,4 KB · Weergaven: 56
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan