ERLANDSEN DATA CONSULTING Excel & VBA Tips   Information in English / Informasjon på engelsk

 

Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.

Klikk her for å gå til den oppdaterte informasjonen.

Returnere tilfeldige tall

Ved hjelp av funksjonen TILFELDIG() kan du få Excel til å returnere et desimaltall større eller lik 0 og mindre enn 1. Denne funksjonen benyttes mye innen statistikk, men kan også benyttes til andre mer eller mindre nyttige ting, f. eks. til å plukke ut ukens LOTTO-tall...

Eksempler :

=TILFELDIG()*100 Returnerer et desimaltall mellom 0 og 100
=TILFELDIG()*(100-50)+50
Returnerer et desimaltall mellom 50 og 100
=AVRUND(TILFELDIG()*100) Returnerer et heltall mellom 0 og 100

 

Unike tilfeldige tall

Ved hjelp av den egendefinerte funksjonen nedenfor kan man få Excel til å returnere unike tilfeldige tall:

Function UniqueRandomNumbers(NumCount As Long, LLimit As Long, ULimit As Long) As Variant
' lager en matrise med NumCount unike tilfeldige tall i intervallet 
' fra og med LLimit til og med ULimit
Dim RandColl As Collection, i As Long, varTemp() As Long
    UniqueRandomNumbers = False
    If NumCount < 1 Then Exit Function
    If LLimit > ULimit Then Exit Function
    If NumCount > (ULimit - LLimit + 1) Then Exit Function
    Set RandColl = New Collection
    Randomize
    Do
        On Error Resume Next
        i = CLng(Rnd * (ULimit - LLimit) + LLimit)
        RandColl.Add i, CStr(i)
        On Error GoTo 0
    Loop Until RandColl.Count = NumCount
    ReDim varTemp(1 To NumCount)
    For i = 1 To NumCount
        varTemp(i) = RandColl(i)
    Next i
    Set RandColl = Nothing
    UniqueRandomNumbers = varTemp
    Erase varTemp
End Function

' brukseksempel:
Sub TestUniqueRandomNumbers()
Dim varrRandomNumberList As Variant, cl As Range, i As Long
    ' lag 50 tilfeldige tall mellom 1 og 100
    varrRandomNumberList = UniqueRandomNumbers(50, 1, 100)
    ' vis resultatet i en kolonne
    Range(Cells(3, 1), Cells(50 + 2, 1)).Value = _
        Application.Transpose(varrRandomNumberList)
    ' vis resultatet i en rad
    Range(Cells(3, 3), Cells(3, 52)).Value = varrRandomNumberList

    ' lag 16 tilfeldige tall og fyll inn i 16 celler
    varrRandomNumberList = UniqueRandomNumbers(16, 1, 100)
    For Each cl In Range("A1:D4")
        i = i + 1
        cl.Formula = varrRandomNumberList(i)
    Next cl
    Set cl = Nothing

End Sub

Denne funksjonen vil ikke kunne brukes i Excel 5/95.

Unike tilfeldige tall (XL5)

I enkelte tilfeller kan det forekomme at Excel (tilfeldigvis) returnerer flere tilfeldige tall som er identiske med hverandre. Dette er ikke alltid ønskelig, og for å få Excel til å returnere unike tilfeldige tall kan du gjøre følgende :

  1. Åpne filen EXCEL5.INI ved hjelp av NOTISBLOKK-programmet
  2. I seksjonen [Microsoft Excel] skriver du inn RANDOMIZE=1 på en ny linje
  3. Lagre filen EXCEL5.INI med den nye endringen, start Excel på nytt.

Nå vil Excel returnere unike tilfeldige tall. Vær oppmerksom på at hvis du avrunder de tilfeldige tallene til (små) heltall, kan det fremdeles forekomme at noen verdier blir like.

 

Dokumentet er sist oppdatert 2003-03-18 12:42:50

 

 
Erlandsen Data Consulting     http://www.erlandsendata.no/   
Excel & VBA Tips   Copyright ©1999-2024    Ole P. Erlandsen   All rights reserved
E-post kontaktadresse