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

Excel: Aselecte steekproef zonder terugleggen

  • Onderwerp starter Onderwerp starter Ezzz
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Ezzz

Gebruiker
Lid geworden
12 mei 2016
Berichten
20
Hallo,

Ik ben bezig met een aselecte steekproef waarbij ik niet wil dat de cellen die uit de reeks gekozen worden, meerdere keren worden gekozen. Ik heb uiteraard al van alles uit geprobeerd ( de functies aselect, integer, hoogste, laagste), maar krijg voornamelijk foutmeldingen of toch dubbele gekozen cellen. Weet iemand, bijvoorbeeld aan de hand van een voorbeeld, hoe ik dit probleem op kan lossen?
 

Bijlagen

Laatst bewerkt:
Uit cel H6 van bijgaande Bingo toepassing (werkblad is beveiligd, maar zonder wachtwoord).
 

Bijlagen

Een variant.
Code:
=GROOTSTE((RIJ($1:$10)-1)*NIET(AANTAL.ALS($M$19:M19; RIJ($1:$10)-1));ASELECTTUSSEN(1;11-RIJ(A1)))
 
Daarvoor hebben we VBA:

Code:
Sub M_snb()
   [A1:A20] = "=rand()"
   [A1:A20] = [index(rank(A1:A20,A1:A20),)]
End Sub
 
Die wilde ik niet in een formule gebruiken, want dan was ik een extra kolom nodig voor aselect(). :d
 
Met een matrixformule zoals in de bijlage in M20, bevestigd met Ctrl+Shift+Enter en gekopieerd naar beneden:
Code:
=KLEINSTE(ALS(ISNB(VERGELIJKEN($H$20:$H$29;$M$19:M19;0));$H$20:$H$29);ASELECTTUSSEN(1;11-RIJEN(M$20:M20)))
Ik geloof toch niet dat ik het helemaal snap. Ik ben nu namelijk in het bestand waarin ik daadwerkelijk wil werken, de formule aan het toepassen in kolom J2 (zie bijlage). De formule wordt dan: =KLEINSTE(ALS(ISNB(VERGELIJKEN($D$2:$D$3781;$J$2;J2:0));$D$2;$D$3781);ASELECTTUSSEN(1;3782-RIJEN(J$2:J2)))}

Echter zegt ie dan dat de formule een fout bevat. Weet iemand waar deze fout zit of wat er moet veranderen?

Bekijk bijlage Aselecte steekproef 2.xlsx
 
Bij zo'n omvang gaat een matrixformule niet werken.

VBA dus, zoals de vervolmaakte macro van snb:

Code:
Sub MB_snb()
   Application.ScreenUpdating = False
   Randomize
   [D2:D3781] = "=rand()"
   [D2:D3781] = [index(rank(D2:D3781,D2:D3781),)]
   Application.ScreenUpdating = True
End Sub
 

Bijlagen

@MB

Randomize is alleen nodig als je gebruik maakt van de VBA funktie rnd.
Is hier dus 'volmaakt' overbodig.

Dat is ook het geval voor application.screenupdating =false. Test het maar eens met de timer.

De 'volmaakte' macro

Code:
Sub M_snb()
   [D2:D3781] = "=rand()"
   [D2:D3781] = [index(rank(D2:D3781,D2:D3781),)]
End Sub
 
Laatst bewerkt:
@snb
Voor wat betreft randomize heb je helemaal gelijk.
Voor wat betreft screenupdating gaat het niet alleen om de snelheid, maar ook om weergave van het tussenresultaat, dus die zou ik er - om cosmetisch redenen - in laten.

In ieder geval kunnen we het er over eens zijn dat hier een VBA oplossing op zijn plaats is.
 
Bij zo'n omvang gaat een matrixformule niet werken.

VBA dus, zoals de vervolmaakte macro van snb:

Code:
Sub MB_snb()
   Application.ScreenUpdating = False
   Randomize
   [D2:D3781] = "=rand()"
   [D2:D3781] = [index(rank(D2:D3781,D2:D3781),)]
   Application.ScreenUpdating = True
End Sub

Wat betekent dan die komma tussen de eerste D3781 en de tweede D2, want hij zegt dat de formule niet klopt?
 
hoe komt het toch dat er in die mooie vba oplossing van snb geen dubbelen voor komen?
kan dat niet of is de kans heel klein ?
 
Niet in het voorbeeldbestand toch?
 
Niet in het voorbeeldbestand toch?

Nee,niet in het voorbeeldbestand. Maar ik heb de formule uit het voorbeeldbestand gekopieerd naar mijn eigen bestand en alleen de cellen vervangen. Blijkbaar doe ik nog steeds iets fout.
 
Even vergelijken en doorzetten, of het bestandje plaatsen.
 
Zorg ervoor dat:

- er geen cellen 'protected' zijn
- er geen samengevoegde cellen zijn
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan