Avatar billede Ilovetofake Novice
04. april 2017 - 20:30 Der er 5 kommentarer og
1 løsning

Tilfældig udvægelse fra en power pivot

Jeg har en power pivot fra sql, der udgør min population. Jeg har beregnet et minimumskrav til stikprøveundersøgelsen. Jeg har så brug for at validere, at fordelingen på stikprøven svarer til fordelingen på populationen.

Jeg vil gerne maskinelt tilfældigt udvælge x antal rækker fra populationen svarende til mit minimumskrav til stikprøveundersøgelsen, hvor intet udtræk fremkommer to gange eller mere.

Kan jeg få hjælp til en makro, der kan dette? Jeg har ikke faste værdier, da mit minimumskrav til stikprøveundersøgelsen varierer med opdateringen af min power pivot.
Avatar billede acore Ekspert
05. april 2017 - 10:05 #1
Skal det forstås således at du har brug for en funktion, der returnerer N integers mellem 1 og N og som ikke er ens?
Avatar billede acore Ekspert
05. april 2017 - 10:05 #2
funktion=makro
Avatar billede Ilovetofake Novice
05. april 2017 - 17:47 #3
Jeg har brug for en makro, der returnerer n(Stikprøver) integers mellem 1 og N (Population) og som ikke er ens.. altså hvor N > n
Avatar billede acore Ekspert
05. april 2017 - 20:10 #4
Prøv med:

Function RANDOMARRAY(n As Integer, min As Integer, max As Integer, Optional unique As Boolean = False)
    Dim i As Integer
    Dim rand As Integer
    ReDim a(1 To n) As Integer
   
    If max - min + 1 < n Then
        RANDOMARRAY = CVErr(xlErrValue)
    Else
        Randomize
   
        For i = 1 To n
            Do
                rand = min + Int((max - min + 1) * Rnd)
            Loop While unique And isUsed(i - 1, a, rand)
            a(i) = rand
        Next i
        RANDOMARRAY = a
    End If
End Function
Function isUsed(n As Integer, a() As Integer, value As Integer)
    Dim i As Integer
   
    isUsed = False
    For i = 1 To n
        If a(i) = value Then
            isUsed = True
            Exit For
        End If
    Next i
End Function

Hvis du vil bruge den som brugerdefineret funktion (erstat n og N med dine tal eller celle-referencer:

=RANDOMARRAY(n;1;N;TRUE)

Hvis du vil have array'et vist, skal du bruge den som matrix-funktion.
Avatar billede Ilovetofake Novice
08. april 2017 - 12:53 #5
Det er brugbart.

Jeg har brug for en matrix-transponering af de udtræk fra min powerpivot, som formlen generer. Hvordan lægger jeg det ind?

[IMG]http://i65.tinypic.com/9gyhpl.png[/IMG]
Avatar billede acore Ekspert
08. april 2017 - 15:24 #6
=TRANSPOSE(RANDOMARRAY(n;1;N;TRUE))

Du kan også indsætte det i funktionen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester