Avatar billede super_bedst Novice
15. oktober 2011 - 20:05 Der er 1 løsning

VBA Hjælp Random med log

Hej,
Jeg har nedenstående script som jeg ønsker skrevet en smule om så funktionen er:
en randomgenerator i heltal med en log over fx 15 seneste tal hvis tallet trækken inden for de 15, trækkes automatisk nyt tal.
denne funktion skal deaktiveres hvis intervallet mellem første og sidste tal i randommen er mindre end minimum gentagelses interval.
det giver følgende variabler:
Mindste tal
Højeste tal
minimums interval.
samt output celle.

nedenfor ses nuværende kode.
Public Sub TilfældigTal()
    Dim A As Long, AntalTal As Long, X As Long
    Randomize    ' starter randomize generatoren
    Dim Tal() As Variant
    AntalTal = 15    'der er her plads til 3 værdier 0 bruges ikke,
    'hvis der skal laves flere værdier, rettes 3 tallet
    Mindste = [AGFH!B4]  'Mindste i celle I6 og
    Storste = [AGFH!C4]  'Storste i celle G6
    If (Mindste = Storste) Or (Mindste > Storste) Then
        MsgBox "Mindste og største må ikke have samme værdi og" & vbCrLf & "Største skal altid være større end mindste"
    End If
    Decimaler = 0    'J6 angiver antallet af decimaler
    ReDim Tal(AntalTal, 1)

    For X = 0 To 1    ' to kolonner posigtive tal i første (0) og negative i den anden(1)
        A = 0
        Do
            A = A + 1
            Tal(A, X) = Round((Rnd() * (Storste - Mindste + 1) + Mindste), Decimaler)
            If X = 1 Then Tal(A, X) = Tal(A, X) * -1
            For I = 0 To A - 1
                If Tal(I, X) = Tal(A, X) Then A = A - 1  ' hvis tallet er brugt, laves en ny
            Next
            If Tal(I, 0) + Tal(I, 1) < 0 Then A = A - 1    'Tjekker om resultatet er mindre end 0, hvis sand laves en ny
        Loop Until A = AntalTal
    Next
    'de fundne værdier skrives til cellerne
    [AGFH!B7] = Tal(1, 0): [AGFH!C7] = Tal(1, 1)
    [AGFH!B8] = Tal(2, 0): [AGFH!C8] = Tal(2, 1)
    [AGFH!B9] = Tal(3, 0): [AGFH!C9] = Tal(3, 1)
    [AGFH!B10] = Tal(4, 0): [AGFH!C10] = Tal(4, 1)
    [AGFH!B11] = Tal(5, 0): [AGFH!C11] = Tal(5, 1)
    [AGFH!B12] = Tal(6, 0): [AGFH!C12] = Tal(6, 1)
    [AGFH!B13] = Tal(7, 0): [AGFH!C13] = Tal(7, 1)
    [AGFH!B14] = Tal(8, 0): [AGFH!C14] = Tal(8, 1)
    [AGFH!B15] = Tal(9, 0): [AGFH!C15] = Tal(9, 1)
    [AGFH!B16] = Tal(10, 0): [AGFH!C16] = Tal(10, 1)
    [AGFH!B17] = Tal(11, 0): [AGFH!C17] = Tal(11, 1)
    [AGFH!B18] = Tal(12, 0): [AGFH!C18] = Tal(12, 1)
    [AGFH!B19] = Tal(13, 0): [AGFH!C19] = Tal(13, 1)
    [AGFH!B20] = Tal(14, 0): [AGFH!C20] = Tal(14, 1)
    [AGFH!B21] = Tal(15, 0): [AGFH!C21] = Tal(15, 1)
   
End Sub
Avatar billede super_bedst Novice
20. februar 2013 - 06:54 #1
lukker tråd
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

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