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

Random een celinhoud kiezen in een bereik

Status
Niet open voor verdere reacties.

willywaai

Nieuwe gebruiker
Lid geworden
10 sep 2023
Berichten
1
Ik heb een bereik (A1:A50) met daarin waarden, echter sommige cellen zijn leeg.
Ik wil random een cel inhoud kiezen uit dat bereik, echter met uitsluiting van de lege cellen (het bereik sorteren zodat alle lege cellen gegroepeerd staan is geen optie, want de inhoud van elke cel in het bereik (A1:A50) mag niet verplaatst worden).
Ik heb zo 52 identieke bereiken, ik wens de formule voor (A1:A50) ook toe te passen in die 49 andere bereiken ...
Ik gebruik Office 2019. Kan iemand mij helpen, alvast bedankt !
 
Met een macro:
 

Bijlagen

  • Random.xlsm
    19,6 KB · Weergaven: 15
nog een optie:
Code:
Sub Rand()
Dim RNG1 As Range, r As Range, c As Collection
    Set c = New Collection
    Set RNG1 = ActiveSheet.Range("A1:A50")
    For Each r In RNG1
        If r.Value <> "" Then
            c.Add r
        End If
    Next r
    Dim N As Long
    N = Application.WorksheetFunction.RandBetween(1, c.Count)
    Set rselect = c.Item(N)
    MsgBox rselect
End Sub
 
Merkwaardig: in mijn Excel is 49 +1 = 50 en niet 52.
Je hebt toch niet per ongeluk voor 52 weken afzonderlijke gebieden gedefinieerd ?
Ben je bekend met dynamische tabellen in Excel ?

Iedere vraagsteller over 'random' vergeet erbij te vermelden of het reusltaat uit unieke waarden moet bestaan of niet.
 
Volgens mijn gegevens is de FILTER functie beschikbaar in 2019, dus ... zoiets?
Code:
=INDEX(FILTER(A1:A50;A1:A50<>"");ASELECTTUSSEN(1;AANTALARG(FILTER(A1:A50;A1:A50<>""))))
In Excel 365 kan dit nog een beetje korter, aangezien daarin de LET functie beschikbaar is.
Code:
=LET(a;A1:A50;x;FILTER(a;a<>"");INDEX(x;ASELECTTUSSEN(1;AANTALARG(x))))
 
Laatst bewerkt:
this sounds familiar
Code:
=ALS.FOUT(AGGREGAAT(15;6;A$1:A$50/(ISGETAL(A$1:A$50)*(AANTAL.ALS(F$1:F1;A$1:A$50)=0));ASELECTTUSSEN(1;AANTAL(A$1:A$50)-AANTAL(F$1:F1)));"-")
 

Bijlagen

  • Random (1).xlsm
    26,2 KB · Weergaven: 6
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan