• 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.

validatie mogelijkheden beperken aan de hand van wat eerder is ingevuld?

Status
Niet open voor verdere reacties.

arjoderoon

Gebruiker
Lid geworden
2 mei 2007
Berichten
476
Bij mijn voetbalpoule ontdekte ik dat een deelnemer een aantal keer dezelfde landen heeft ingevuld voor 1/8e finale. Nu zit ik te broeden op een idee om dit te kunnen beperken.

Is er in excel een mogelijkheid om je validatie mogelijkheden te beperken aan de hand van wat eerder is ingevuld?

Voorbeeld:
Voor de nummer 1 van groep A moet de deelnemer zelf de naam van het land kiezen (alle FIFA regels voor de standen inbouwen middels formules gaat wat mij betreft veel te ver). bij winnaar groep A kiest hij dan uit:
-brazilie
-mexico
-kroatie
-kameroen

De deelnemer kiest hier voor brazilie.

Vervolgens moet hij daarna nog kiezen wie de nummer 2 in groep A wordt.

middels de validatie die hierachter hangt (zelfde als bij de winnaar van groep a) heeft hij nu nog de keuze uit dezelfde landen als hierboven.
Wat ik zou willen is dat hier het land wat bij de winnaar is gekozen, uit weg gelaten wordt.

Ik heb nu de validatie geregeld door een naamlijst te gebruiken die naar alle een plek in het schema verwijst waar alle landen uit poule A staan.

Is zoiets te doen?
 
Thanks. Ik zie dat je er een sub voor gemaakt hebt. Je ontkomt in dit geval niet aan een macro?
 
je zal ook met een macro moeten werken als je het met een formule wilt, maar dan kan je het maar in een cel gebruiken.
 
het kan ook met een vba function
dat implementeert iets makkelijker.
deze function kun je ook als matrix function gebruiken dan moet je geen nummers invullen.
Code:
Function Mat1minMat2(Mat1, Mat2, Optional Nummer As Integer = -1)
    With CreateObject("System.Collections.ArrayList")
    For Each cel In Mat1.Cells
      If Not .Contains(LCase(cel.Value)) Then .Add LCase(cel.Value)
    Next
    For Each cel In Mat2.Cells
      If .Contains(LCase(cel.Value)) Then .Remove LCase(cel.Value)
    Next
'    .Sort
    If Nummer = -1 Then
        Mat1minMat2 = WorksheetFunction.Transpose(.toarray())
    ElseIf Nummer <= .Count Then
        Mat1minMat2 = .Item(Nummer - 1)
    Else
        Mat1minMat2 = ""
    End If
  End With
End Function
in blad1 staat vba code om te voorkomen dat 2 gelijke ploegen worden ingevuld.
 

Bijlagen

Laatst bewerkt:
@ Sylvester
Mooie oplossing had ik nog niet gezien, moet in je worksheet change event [c4] niet [c2] zijn.
 
Voor het geval het beslist zonder vba moet, zie bijlage.
(De paar regels vba die er wel staan, kunnen verwijderd worden, maar is iets minder fraai).
Als vooraf ook de nrs. 3 en 4 moeten gekozen worden, wordt het zonder vba lastiger.
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan