Avatar billede lunddata Nybegynder
15. januar 2006 - 16:57 Der er 13 kommentarer og
1 løsning

Helt tal skal gå op i decimaltal

Jeg har tidligere stillet spm. til at frembringe tal hvor et helt tal bliver divideret med et helt tal og divisionen går op. Se

http://www.eksperten.dk/spm/483377

Hvordan frembringer jeg tal hvor jeg sikrer at divisor går op i et decimaltal?
Avatar billede kabbak Professor
15. januar 2006 - 17:32 #1
Jeg ved ikke om du kan overskue det, men nu er den bygget ind i maroen, den er som kolonne 2 i variablen


Public Sub TilfældigTal()
    Dim A As Long, AntalTal As Long, X As Long
    Randomize    ' starter randomize generatoren
    Dim Tal() As Variant
    AntalTal = 3    'der er her plads til 3 værdier 0 bruges ikke,
    'hvis der skal laves flere værdier, rettes 3 tallet
    Mindste = [I6]  'Mindste i celle I6 og
    Storste = [G6]  'Storste i celle G6
    Divisor = [K6]  'Divisor
    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 = [J6]    'J6 angiver antallet af decimaler
    ReDim Tal(AntalTal, 2)

    For X = 0 To 2    ' 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 X = 2 Then
                If Tal(A, X) Mod Divisor <> 0 Then A = A - 1 ' tjekker mod divisor, hvis der bliver rest, laves en ny
            End If
            If X = 1 Then
                If Tal(I, 0) + Tal(I, 1) < 0 Then A = A - 1    'Tjekker om resultatet er mindre end 0, hvis sand laves en ny
            End If
        Loop Until A = AntalTal
    Next
    'de fundne værdier skrives til cellerne
    ' Posigtive tal  : Negative tal    : Tal tjekket mod divsor : Devisor skrives også i arket
    [B14] = Tal(1, 0): [C14] = Tal(1, 1): [F14] = Tal(1, 2): [g14] = Divisor
    [B15] = Tal(2, 0): [C15] = Tal(2, 1): [F15] = Tal(2, 2): [g15] = Divisor
    [B16] = Tal(3, 0): [C16] = Tal(3, 1): [F16] = Tal(3, 2): [g16] = Divisor

    ' her fortsættes eventuelt med flere celler, men husk at rette 3 tallet, ved AntalTal
End Sub
Avatar billede lunddata Nybegynder
15. januar 2006 - 17:51 #2
Godt!
Lige til at bruge.
... og hvad så hvis jeg vil bruge det uden makro som når jeg dividerer helt tal med helt tal:
=(HELTAL(SLUMP()*HELTAL((B1+A1)/A1))*A1).... men med decimaltal divideret med helt tal?
Avatar billede kabbak Professor
15. januar 2006 - 18:02 #3
prøv med =(SLUMP()*((B1+A1)/A1)*A1)
Avatar billede lunddata Nybegynder
15. januar 2006 - 18:27 #4
og hvis jeg vil have et bestemt antal decimaler?
Avatar billede kabbak Professor
15. januar 2006 - 18:30 #5
=AFRUND((SLUMP()*((B1+A1)/A1)*A1);J6)

hvor du har antal decimaler i J6
Avatar billede lunddata Nybegynder
15. januar 2006 - 18:49 #6
synes ikke at jeg får det rigtige.
Har testet:
har f.eks
a1 = 3
b1 = 33
j6 = 0
og får f.eks 5 som udfald
Avatar billede kabbak Professor
15. januar 2006 - 18:56 #7
Hvad er ikke det rigtige?

Når du har 33 i B1, er det jo den største værdi du kan få
5/3 = 1,666666667

1,666666667 *3 = 5
Avatar billede lunddata Nybegynder
15. januar 2006 - 19:40 #8
ok, men når jeg bruger formlen =(HELTAL(SLUMP()*HELTAL((B1+A1)/A1))*A1)
får jeg kun tal som 3 går op i.
Ved 15/01-2006 18:49:31: 3 går jo ikke op i 5.
Udfaldet skulle så have været 6 for at divisionen går op når der i j6 er angivet 0 for antal decimaler.

Det jeg gerne vil have som udfald er netop tal hvor divisionen går op
Avatar billede kabbak Professor
15. januar 2006 - 20:05 #9
det vil sige, at du vil at resultatet giver et tal på f.eks. 2 decimaler, hvis du har skrevet 2 i J6.

det formlen gør at det tal der skal divideres, kun har 2 decimaler, jeg mener ikke at du kan lave det andet via formler
Avatar billede kabbak Professor
15. januar 2006 - 20:54 #10
Avatar billede lunddata Nybegynder
15. januar 2006 - 22:01 #11
Er det ikke det samme ark som jeg modtog i går?
Avatar billede kabbak Professor
16. januar 2006 - 00:03 #12
jo, men der er rettet i koden
Avatar billede lunddata Nybegynder
16. januar 2006 - 10:42 #13
SÅDAN!!!
Det var lige det jeg søgte
MANGE TAK!
Lægger du et svar?
Avatar billede kabbak Professor
16. januar 2006 - 10:49 #14
Det var altså resultatet, der skulle give det antal decimaler, du mente.
Men pas på at du ikke laver største og mindste for snæver, ved 0 decimaler.

Hvis du bruger 7 som divisor, skal spændet være minst fra 7 til 21, da for at få 3 forskellige resultater, bliver både 7 14 og 21 brugt.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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

IT-JOB

Politiets Efterretningstjeneste

GenAI Specialist i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen