Avatar billede iakob Nybegynder
14. maj 2004 - 19:26 Der er 2 kommentarer og
2 løsninger

Excel: Slump og genberegning af ark

Jeg har brug for at få beregnet en vilkårlig værdi (jeg bruger funktionen slump()) på baggrund af en indtastet værdi, men når den er beregnet så ønsker jeg ikke at den bliver genberegnet. Kort sagt:

A1 Indeholder et tal, feks. 20
A2 Indeholder et vilkårligt tal mellem 1 og tallet i A1

Hvis A1 bliver opdateret manuelt, så ønsker jeg at A2 genberegnes. Ellers vil jeg ikke have den genberegnet.

Hvordan kan man gøre det?
Avatar billede jkrons Professor
14. maj 2004 - 19:39 #1
En m ulighed er at bruge en stump kode til at generere det tilfældige tal, så A2 kun indeholder et tal, ikke en formel.
Avatar billede jkrons Professor
14. maj 2004 - 20:04 #2
Du kan fx lægge denne kode i arkets kodemodul. så genereres der et nyt tilfældigt tal i A2, når der rettes i A1, og kun, når der rettes i A1.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("a1") Then
        limit = Range("a1").Value
        Randomize
        a = Rnd()
        a = CInt(a * limit)
        If a = 0 Then
            a = 1
        Else
            a = a
        End If

        Range("a2").Value = a
    End If
End Sub
Avatar billede iakob Nybegynder
17. maj 2004 - 19:57 #3
Hm... Jeg har aldrig prøvet at kode noget i excel. Men jeg tror jeg simplificerede problemet for meget i min beskrivelse hvis jeg skal bruge denne løsning.

Jeg har en kolonne (A:A) som indeholder en kolonne med strenge. I en matrix er der en oversættelse af disse strenge til tal (f.eks. 20 eller 10 etc). På baggrund af disse tal skal der i kolonne C beregnes et antal vilkårlige tal mellem 1 og tallen i den tilsvarende række i A.

Altså
A            B                C
20                            12
20                              1
10                            10

mv

Kan det lade sig gøre?
Avatar billede jkrons Professor
17. maj 2004 - 22:04 #4
Det tror jeg godt det kan, men så kan det ikke ske automatisk som anført ovenfor. Så er du nok nødt til selv at aktivere makroen.

Læg denne makro i et modul:

Sub TilTal()
    For Each c In ActiveSheet.UsedRange.Columns("A:A").Cells
       

        l = c.Value
        Randomize
        a = Rnd()
        a = CInt(a * l)
        If a = 0 Then
            a = 1
        Else
            a = a
        End If

        c.Offset(0, 2).Value = a
    Next c
   
End Sub

Afspil makroen når du har dine tal i A-kolonnen klar. Den indsætter så et tilfældigt tal mellem 1 og værdien i An i den tilsvarende celle i C-kolonnen.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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