• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

sorteren op basis van ABBA

Status
Niet open voor verdere reacties.

laforge2

Gebruiker
Lid geworden
11 jan 2007
Berichten
45
Hallo,
Ik heb leden die een spel willen spelen.
Ze geven zich op door hun rating op te geven.
Nu wil ik ze indelen in 2 poules op basis van het ABBA systeem
Hoe doe ik dat in Excel, het moet werken vanaf versie 2007

Hieronder een voorbeeld wat ik bedoel:

Leden geven zicht op (meteen even gesorteerd op rating):
member8 - 4500
member4 - 4000
member7 - 3500
member3 - 3000
member6 - 2500
Member2 - 2000
member5 - 1500
member1 - 1000

Zou ik 2 poules maken op basis van ABBA dan zou het zo worden:

Poule1:
member8
member3
member6
member1

Poule2:
member7
member5
member4
member2

Alvast bedankt.
Peter
 

Bijlagen

  • Teamspelen forum.xlsm
    42,2 KB · Weergaven: 23
Laatst bewerkt:
Met een hulpkolom en een matrix formule (sluit je af met control shift enter)
Als het veel deelnemers zijn kun je naast de eerste vier deelnemers abba zetten. Selecteer die vier cellen en trek door tot de laatste deelnemer. De abba structuur zet zich automatisch door.
 

Bijlagen

  • Map1.xlsx
    10,5 KB · Weergaven: 20
hallo peter, graag een voorbeeld bestand aub
Als ik die zou hebben, zou ik hem gelijk meegestuurd hebben.

Het ABBA ziet er dus zo uit:
member8 - 4500 A
member4 - 4000 B
member7 - 3500 B
member3 - 3000 A
member6 - 2500 A
Member2 - 2000 B
member5 - 1500 B
member1 - 1000 A

Hierdoor wordt de rating gelijkmatig verdeeld over de poules.

Gr
Peter
 
Jou zou het ook met een draaitabel kunnen doen. Dat is het meest simpele
 
Kan ook maar lijkt me niet echt nodig hier. Maarja, toch 2 extra vba voorbeelden en een draaitabel in onderstaand bestaand.

edit: Nog een variant

Code:
Sub jvrrr()
  jv = Cells(1).CurrentRegion.Offset(1)
  For i = 1 To UBound(jv)
      a = Abs(Mid("abba", ((i - 1) Mod 4) + 1, 1) = "a")
      jv(IIf(a = 1, j + 1, jj + 1), 1 + Abs(a = 0)) = jv(i, 1)
      j = j + Abs(a = 1)
      jj = jj + Abs(a = 0)
  Next
  Cells(3, 19).Resize(j - 1, 2) = jv
End Sub
 

Bijlagen

  • Map1 (2).xlsm
    21,4 KB · Weergaven: 22
Laatst bewerkt:
of deze zonder abbakolom:
Code:
Sub sp()
  jv = Cells(1).CurrentRegion.Offset(1)
  For i = 1 To UBound(jv)
     If Mid("abba", ((i - 1) Mod 4) + 1, 1) = "a" Then
      jv(j + 1, 1) = jv(i, 1)
      j = j + 1
    Else
      jv(jj + 1, 2) = jv(i, 1)
      jj = jj + 1
    End If
  Next
  Cells(3, 10).Resize(j - 1, 2) = jv
End Sub
 
Laatst bewerkt:
Of matrix.
Code:
=KLEINSTE(ALS(RIJ($1:$8)={1;4;5;8};RIJ($1:$8);"");RIJ())
 
Code:
Sub M_snb()
  Cells(20, 1).Resize(4, 2) = [choose(column(A:B),choose(row(1:4),A2,A5,A6,A9),choose(row(1:4),A3,A4,A7,A8))]
End Sub

Maar waarom je dit niet gewoon met simpele Excelformules zou doen ontgaat me.
 
Dank allemaal.
Ben er nog niet uit.
Ik ga zeker naar de oplossingen kijken.
VBA heeft niet mijn voorkeur, ik wil het graag met formules doen.
Reden is dat ik het nu compleet zonder VBA hebt en dit zou het enige worden wat dan VBA zou zijn.

Omdat er met de uitkomst de uiteindelijke indeling gemaakt moet worden en voor meer zaken gebruikt zal worden is een draaitabel ook niet handig lijkt mij.
Het liefst zou ik het dus zien in formule vorm

Ik heb nu ook een sorteer mechanisme, maar dat is op basis van het ABAB systeem.
Dat is dus niet helemaal eerlijk.
Dat kan ik eventueel wel plaatsten natuurlijk.


Dank alvast voor het meedenken.

Gr
Peter
 
Laatst bewerkt:
Plaats bij voorkeur een bestand.
 
Met formule.
 

Bijlagen

  • Teamspelen forum.xlsb
    35,2 KB · Weergaven: 28
Ik heb deze bekeken.
Bijna goed.
Afhankelijk van het aantal deelnemers (max=40) komen er 1, 2, 3 of 4 poules.
Het aantal poules vind je terug op H3.
Maar jouw oplossing kan ik misschien wel aanpassen.
 
Ik ben bezig geweest en voor een groot deel is het inmiddels gelukt.
Het laatste stukje, daar laat mijn kennis mij in de steek.


Als je bijgevoegde Excel bekijkt heb ik de ABBA op zich voor elkaar.
Echter moeten de kolommen P en Q gevuld worden zoals in de Excel.
Daar heb ik het nu met de hand ingevuld, maar doet moet natuurlijk ook middels formules.

Voor de goede orde, het aantal deelnemers kan variëren tussen de 4 en 40 (C2)
Afhankelijk van de deelnemers wordt het aantal poules bepaald (H3)

Nadat de spelers zijn ingevoerd met bijbehorende rating (kolom B en C) worden ze gesorteerd op rating van hoog naar laag (kolom I en J).
In de kolommen K, L en M, kijk ik afhankelijk het aantal poules hoe de ABBA volgorde moet worden omdat vervolgens in kolom H te plaatsen.
Wellicht kan Kolom K, L en M in 1 formule, maar wil het op die manier overzichtelijk houden als ik moet gaan troubleshouten.
 

Bijlagen

  • abba waarden.xlsx
    25,9 KB · Weergaven: 11
Die info had eerder gekund.

Klopt, ik kwam erachter toen ik de oplossing van HSV zag.
Door hem ben ik wel aan het puzzelen gegaan en zag ook wat ik niet gemeld had.
Dus vandaar direct aangevuld.
Excuus.
 
Zo lukt het in ieder geval:

PHP:
=IF(ROW(A1)>COUNTA($B$4:$B$44);"";INDEX($B$4:$B$44;CHOOSE(MOD(ROW(A1)-1;4)+1;INT((ROW(A2)-1)/4)+1;COUNTA($B$4:$B$44)/2-INT((ROW(A1)-1)/4);COUNTA($B$4:$B$44)/2+INT((ROW(A1)-1)/4+1);COUNTA($B$4:$B$44)-INT((ROW(A1)-1)/4))))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan