Avatar billede fjelle123 Nybegynder
14. september 2004 - 13:21 Der er 18 kommentarer og
1 løsning

Lodtrækning i EXCEL tilfældige tal.

Hej Jeg ville hører om nogen af jer kloge Excel programmører kan hjælpe mig.

Jeg har et excel ark med 2 kolonner (navn ; Lønnummer) og der er 32 linjer, hvis jeg skal have et tilfældigt tal ud for hver person som skal ligge mellem 1 - 32 hvordan gør jeg det?
14. september 2004 - 13:26 #1
=HELTAL(SLUMP()*32)
Avatar billede fjelle123 Nybegynder
14. september 2004 - 15:15 #2
Tak for dit svar, desværre virker denne ikke da samme tal fremkommer flere gange.
Avatar billede fjelle123 Nybegynder
14. september 2004 - 15:16 #3
Undskyld jeg ikke lige skrev det i spørgsmålet...
Avatar billede sjap Praktikant
14. september 2004 - 15:16 #4
Skal tallene være forskellige, eller må de godt være ens?
Avatar billede sjap Praktikant
14. september 2004 - 15:16 #5
Ok, det har du så svaret på? :0)
Avatar billede sjap Praktikant
14. september 2004 - 15:17 #6
Du skal også lige være opmærksom på at funktionen SLUMP skifter værdi hver gang der opdateres.
Avatar billede fjelle123 Nybegynder
14. september 2004 - 15:24 #7
Tallene skal være forskellige, og må ikke fremkomme flere gange,

Sjap har du en go mulighed?
Avatar billede sjap Praktikant
14. september 2004 - 15:28 #8
Du kan kopiere nedenstående funktion ind i dit regneark. Så skal du markere alle 32 celler og trykke F2 og skrive
=randInt(1;32)
Når det er skrevet trykker du Ctrl-Shift-Enter - derved fyldes formlen ud i alle felterne.

Public Function RandInt(Optional ByVal nStart As Long = 1&, Optional ByVal nEnd As Long = -2147483647) As Variant
    Dim vArr As Variant
    Dim vResult As Variant
    Dim nCount As Long
    Dim nTemp As Long
    Dim nRand As Long
    Dim i As Long
    Dim j As Long
    Application.Volatile
    If TypeName(Application.Caller) <> "Range" Then Exit Function
    With Application.Caller
        ReDim vResult(1 To .Rows.Count, 1 To .Columns.Count)
        nCount = .Count
        If nEnd < nStart Then nEnd = nStart + nCount - 1
        If nCount > nEnd - nStart + 1 Then
            RandInt = CVErr(xlErrNum)
            Exit Function
        ElseIf nCount = 1 Then
            RandInt = CLng((nEnd - nStart) * Rnd() + nStart)
            Exit Function
        End If
    End With
    ReDim vArr(0 To nEnd - nStart)
    For i = 0 To UBound(vArr)
        vArr(i) = i + nStart
    Next i
    For i = UBound(vArr) To 1 Step -1
        nRand = Int(Rnd() * (i + 1))
        nTemp = vArr(nRand)
        vArr(nRand) = vArr(i)
        vArr(i) = nTemp
    Next i
    nCount = 0
    For i = 1 To UBound(vResult, 1)
        For j = 1 To UBound(vResult, 2)
            vResult(i, j) = vArr(nCount)
            nCount = nCount + 1
        Next j
    Next i
    RandInt = vResult
End Function
Avatar billede sjap Praktikant
14. september 2004 - 15:29 #9
Bemærk at denne funktion har det ligesom SLUMP, så værdierne ændrer sig hver gang der opdateres/genberegnes.
Avatar billede sjap Praktikant
14. september 2004 - 15:37 #10
ALTERNATIV:

- Skriv numrene 1 - 32 i f.eks. B1:B32
- I A1 skriver du så =SLUMP() og kopierer denne formel til A2:A32
- Marker A1:B32 og vælg f.eks. "Sorter stigende"

Så vil begge kolonner sorteres efter de tilfældige tal i kolonne A. Fordelen frem for RandInt-funktionen er, at numrene fra 1 til 32 IKKE ændrer sig hver gang der genberegnes.
Avatar billede fjelle123 Nybegynder
14. september 2004 - 15:49 #11
Hej Sjap.

Jeg forstår ikke helt, Jeg kopier hele den smører der starter med Public function og slutter med End Function ind et vilkårligt sted i regnearket.

Derefter trykker jeg =randInt(1;32) ind så der kommer til at stå " =randint(1;32)navn " i kolonne 1  og " =randInt(1;32) lønnummer " i kolonne 2, det sker der ikke rigtigt noget med.

Skulle den lave en kolonne 3 med det tilfældige nummer i? jeg kan ikke se at der overhovede er en kommando der hedder noget med =randInt(1;32)

Tak fordi du gider bruge tid på det ::-)
Avatar billede sjap Praktikant
14. september 2004 - 15:55 #12
Det er mig der er lidt utydelig.

Funktionen som du skal kopierer skal sættes ind på følgende måde:

- Tryk F11 for at starte VBA-editoren
- I menuen vælges Indsæt og herunder vælges Modul
- I det hvide område indsætter du så hele funktionen RandInt

Først når du har gjort det, er RandInt klar til brug i regnearket.
Avatar billede sjap Praktikant
14. september 2004 - 15:58 #13
I den første celle skal der kun stå

=RandInt(1;32)

Hverken mere eller mindre. Når du så trykker Ctrl-Shift-Enter så kommer der tuborg-klammer omkring

{=randInt(1;32)}

Det betyder blot at det er en matrixformel (dvs. en formel, der påvirker flere celler samtidigt)
Avatar billede kabbak Professor
14. september 2004 - 19:13 #14
Marker dine 32 celler og kør denne makro

Public Sub Rand32()
Dim Sel As Variant
Sel = Selection
For i = 1 To UBound(Sel)
OM:
V = Int(Rnd * 32) + 1
Sel(i, 1) = V
If i > 1 And i < 33 Then
For A = 1 To i - 1
If Sel(A, 1) = V Then GoTo OM
Next
End If
Next
Selection = Sel
End Sub
Avatar billede kabbak Professor
14. september 2004 - 19:18 #15
Her er en der lacer tilfældig over det antal celler der er makeret.
Markering kun i 1 kolonne

Public Sub Rand32()
Dim Sel As Variant
Sel = Selection
Maks = UBound(Sel)
For i = 1 To Maks
OM:
V = Int(Rnd * Maks) + 1
Sel(i, 1) = V
If i > 1 And i < Maks + 1 Then
For A = 1 To i - 1
If Sel(A, 1) = V Then GoTo OM
Next
End If
Next
Selection = Sel
End Sub
Avatar billede fjelle123 Nybegynder
27. marts 2005 - 12:48 #16
ok
Avatar billede kabbak Professor
27. marts 2005 - 12:50 #17
var der ikke noget du kunne bruge, siden du tog point selv. ????
Avatar billede sjap Praktikant
27. marts 2005 - 14:07 #18
Det er da flot. Og ikke engang et ord om hvad årsagen er! Blot et fjollet lille "ok"! Det lugter lidt.
Avatar billede dejligeanders Novice
02. februar 2011 - 09:28 #19
Gammel tråd, men altid en fornøjelse at finde det man søger.

Nu fik du tilsyneladende ingen point dengang (uvist hvorfor)... så vil da gerne lige komme med en tak i det mindste!
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