Skapa slumpmässig spelordning
I detta sista tips om spelsystem belyses hur vi kan skapa en slumpmässig spelordning.
Exemplet har sin utgångspunkt i de två föregående tipsen.
Vill du få reda på hur vi :
Exempelfilen återfinns under programmeringssektionen på Download-sidan och kan nås här.
Följande uppställning visar utgångspunkten för exemplet:
I kolumnerna G och H finns följande formler (med felhantering):
- G-kolumnen:
=OM(ÄRFEL(LETARAD(F2;$A$2:$C$19;2;FALSKT)) ;"";LETARAD(F2;$A$2:$C$19;2;FALSKT))- H-kolumnen:
=OM(ÄRFEL(LETARAD(F2;$A$2:$C$19;3;FALSKT)) ;"";LETARAD(F2;$A$2:$C$19;3;FALSKT))
Följande procedur skapar:
- En nummerserie i A-kolumnen (för att kunna slå upp värdena).
- En nummerserie för spelomgångar i E-kolumnen.
- En slumpmässig spelordning, där alla lag möter alla, i F-kolumnen.
Option Explicit
Sub Slumpmassig_Spelordning()
Dim rnOmrade As Range
Dim rnCell As Range
Dim Num() As Byte
Dim i As Byte
Dim iPlocka As Byte
Dim iAntal As Byte
Application.ScreenUpdating = False
Set rnOmrade = ActiveSheet.Range("B2", Range("B2").End(xlDown))
iAntal = rnOmrade.Rows.Count
Set rnCell = ActiveSheet.Range("E2")
'Skapa antal matcher
For i = 1 To iAntal
rnCell.Offset(i - 1, 0).Value = i
rnCell.Offset(i - 1, -4).Value = i
Next i
'Då vi inte på förhand vet antal matcher måste vi dels läsa in antal rader
'vilket sker med iAntal och dels dimensionera om arrayen mha av denna
'uppgift.
ReDim Num(iAntal)
For i = 1 To iAntal
Num(i) = i
Next
'Skapa den slumpmässiga spelordningen
For i = 1 To iAntal
iPlocka = 1 + Int(Rnd * (iAntal + 1 - i))
rnCell.Offset(i - 1, 1).Value = Num(iPlocka)
Num(iPlocka) = Num(iAntal + 1 - i)
Next i
Application.ScreenUpdating = True
End Sub
Så här ser resultatet ut efter det att proceduren har körts:
Några avslutande tips:
- Kolumnen med den slumpmässig spelordningen kan med fördel döljas.
- Vill vi skapa en "flashigare" teknisk lösning kan vi läsa in samtliga matcher i en array och utifrån den skapa den slumpmässiga spelordningen - Pröva!
- Gillar vi inte den slumpmässiga spelordningen kan vi antingen göra om den eller manuellt ändra!