Ga naar inhoud

2 Excel (formule) vragen


anoniem

Aanbevolen berichten

Ik heb 2 vragen en hoop dat één van jullie daar een antwoord op heeft Het gaat om een dartsscorebord in Excel.

In cel K7 wordt terug geteld van 501 naar 0 door simpelweg de ingevoerde scores van de 501 af te trekken. Nu het volgende: Ik zou graag willen dat als in cel K7 de waarde op 0 uitkomt de legstand (in cel G7) automatisch met 1 punt word verhoogd en vervolgens dan ook bij een legstand van 3 punten de setstand (in cel I7) automatisch met 1 punt omhoog gaat. Dit moet kunnen alleen ben ik even kwijt hoe dit moet.

Dan vraag 2: Aan de hand van de ingevoerde scores in cel O8 t/m O32 en P8 t/m P32 worden ook de statistieken per speler berekend. (aantal 100+, 140+, 180, Gemiddelde per pijl en per beurt) Als er nu aan een nieuwe leg word begonnen en ik hier voor de scorelijst wis verdwijnen ook alle statistieken. Zo kan ik dus nooit de statistieken over de hele wedstrijd bekijken maar alleen per leg. Kan ik er voor zorgen dat de statistieken per speler worden berekend en bewaard tot het einde van de wedstrijd ook al wis ik de scorelijst?

Alvast bedankt voor jullie reacties. Cor

Link naar reactie
Vraag 1:
code:
Sub PuntenTelling()
  Dim intScore As Integer
  Dim intLegstand As Integer
  Dim intSetstand As Integer
  
  intScore = ActiveSheet.Range("K7").Value
  intLegstand = ActiveSheet.Range("G7").Value
  intSetstand = ActiveSheet.Range("I7").Value
  
  If intScore = 0 Then
    intLegstand = intLegstand + 1
    ActiveSheet.Range("G7").Value = intLegstand
  End If
  
  If intLegstand = 3 Then
    intSetstand = intSetstand + 1
    ActiveSheet.Range("I7").Value = intSetstand
    ActiveSheet.Range("G7").Value = 0
  End If
End Sub

Link naar reactie
Ik heb in vba de code ingevoerd zoals in je voorbeeld. Alleen als nu de score op 0 punten uitkomt gaat niet de legstand met 1 punt omhoog maar blijft gewoon doortellen. Ergens voorbij de 200 komt dan de volgende foutmelding:

Fout 28 tijdens uitvoering Onvoldoende stackruimte

Doe ik nu iets fout of klopt er iets niet in de code? De setstand veranderd ook niet.

Link naar reactie
Zoals je hier onder kunt zien zo heb ik de macro in vba ingevoerd.

Sub puntentelling2() ' ' puntentelling2 Macro ' '

' Dim intScore As Integer Dim intLegstand As Integer Dim intSetstand As Integer intScore = ActiveSheet.Range("K7").Value intLegstand = ActiveSheet.Range("G7").Value intSetstand = ActiveSheet.Range("I7").Value If intScore = 0 Then intLegstand = intLegstand + 1 ActiveSheet.Range("G7").Value = intLegstand End If If intLegstand = 3 Then intSetstand = intSetstand + 1 ActiveSheet.Range("I7").Value = intSetstand ActiveSheet.Range("G7").Value = 0 End If End Sub

Vervolgens heb ik in vba bij Excel – objecten het volgende ingetypt:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) Puntentelling puntentelling2 End Sub

Ik heb namelijk al een macro die het één en ander berekend ( zoals het onder de 0 punten of op 1 punt uitkomen van de score) dus heb ik deze maar puntentelleing2 genoemd en deze vervolgens toegevoegd zoals je hier boven kunt zien.

Of had ik de nieuwe macro kunnen toevoegen aan de reeds bestaande macro? Misschien gaat het daarom niet goed.

(Weet trouwens niemand een antwoord op vraag 2?)

Link naar reactie
quote:
Originally posted by Cor vd H: Dan vraag 2: Aan de hand van de ingevoerde scores in cel O8 t/m O32 en P8 t/m P32 worden ook de statistieken per speler berekend. (aantal 100+, 140+, 180, Gemiddelde per pijl en per beurt) Als er nu aan een nieuwe leg word begonnen en ik hier voor de scorelijst wis verdwijnen ook alle statistieken. Zo kan ik dus nooit de statistieken over de hele wedstrijd bekijken maar alleen per leg. Kan ik er voor zorgen dat de statistieken per speler worden berekend en bewaard tot het einde van de wedstrijd ook al wis ik de scorelijst?


Je zou iets kunnen bedenken om de statistieken aan het eind van iedere leg naar een nieuw cellenbereik te kopiëren. In onderstaand voorbeeld wordt er even simplificerend van uitgegaan dat de statistiek van de huidige leg in C2 t/m C4 staat. Door via een command button de code te activeren worden deze waarden gekopieerd naar D2 t/m D4. Aan het eind vd volgende leg worden de statistieken gekopieerd naar E2 t/m E4 etc:

code:
Private Sub CommandButton1_Click()

'leg 1 If ActiveSheet.Range("D2").Value = "" Then ActiveSheet.Range("D2").Value = ActiveSheet.Range("C2") ActiveSheet.Range("D3").Value = ActiveSheet.Range("C3") ActiveSheet.Range("D4").Value = ActiveSheet.Range("C4") 'leg 2 ElseIf ActiveSheet.Range("D2").Value > 0 And ActiveSheet.Range("E2").Value = "" Then ActiveSheet.Range("E2").Value = ActiveSheet.Range("C2") ActiveSheet.Range("E3").Value = ActiveSheet.Range("C3") ActiveSheet.Range("E4").Value = ActiveSheet.Range("C4") 'leg 3 ElseIf ActiveSheet.Range("E2").Value > 0 And ActiveSheet.Range("F2").Value = "" Then ActiveSheet.Range("F2").Value = ActiveSheet.Range("C2") ActiveSheet.Range("F3").Value = ActiveSheet.Range("C3") ActiveSheet.Range("F4").Value = ActiveSheet.Range("C4")

End If End Sub


Zo worden de statistieken dus per leg bewaard (ik ben geen darter en heb dus geen flauw idee hoeveel legs er kunnen zijn; bovenstaande methode kan ietwat uit de klauwen lopen)

Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...