Avatar billede bars Nybegynder
21. februar 2007 - 12:41 Der er 6 kommentarer og
1 løsning

Generere 3000 rækker med tal

Hej med jer

Jeg ønsker en måde at generere 3000 rækker i et exceldokument hvor der er 13 tal mellem 1 og 90, hvert i en kolonne.

Det samme tal må ikke gå igen i hver række og ingen rækker må være ens.

Og jeg vil gerne have tallene i rækkerne sorteret i vilkårlig rækkefølge.
Avatar billede bars Nybegynder
21. februar 2007 - 13:14 #1
det var vist ikke så godt formuleret, jeg prøver lige igen:

jeg vil gerne have genereret 3000 rækker.
I hver række vil jeg gerne have 13 tal.
hvert af de 13 tal skal stå i en kolonne for sig selv.
i hver række må det samme tal ikke gå igen.
blandt de 3000 rækker må der ikke være nogle ens rækker
Avatar billede kabbak Professor
21. februar 2007 - 13:41 #2
Public Sub LavTal()
    Dim Tal(3000, 12) As Variant, I As Integer, X As Integer, Nr As Integer
    Dim Y As Integer, Z As Integer, Antal As Integer, AA As Integer
    Randomize
   
    For I = 0 To 2999

        For X = 0 To 12
            Nr = Int((90 * Rnd) + 1)

            Tal(I, X) = Nr
            For Z = 0 To X - 1
                If Tal(I, Z) = Nr Then    ' tjekker rækken for dubletter
                    X = X - 1
                End If
            Next
        Next


        For Y = 0 To I - 1
            Antal = 0
            For Z = 0 To 12
                If Tal(Y, Z) = Tal(I, Z) Then Antal = Antal + 1 ' tjekker rækker op mod hinanden
            Next
            If Antal = 13 Then ' hvis der er 13 ens, laves den om
                I = I - 1
                Exit For
            End If

        Next

    Next
    Range("A1:M" & UBound(Tal) + 1) = Tal
End Sub
Avatar billede kabbak Professor
21. februar 2007 - 13:51 #3
Nu kan du se i statusbaren hvad den laver.

Public Sub LavTal()
    Dim Tal(2999, 12) As Variant, I As Integer, X As Integer, Nr As Integer
    Dim Y As Integer, Z As Integer, Antal As Integer
    Randomize
    For I = 0 To 2999
        Application.StatusBar = "Laver række nr.: " & I + 1 & " af 3000"
        For X = 0 To 12
            Nr = Int((90 * Rnd) + 1)    ' udtrækker tal
            Tal(I, X) = Nr
            For Z = 0 To X - 1
                If Tal(I, Z) = Nr Then    ' tjekker rækken for dubletter
                    X = X - 1
                    Exit For
                End If
            Next
        Next

        For Y = 0 To I - 1
            Antal = 0
            For Z = 0 To 12
                If Tal(Y, Z) = Tal(I, Z) Then Antal = Antal + 1    ' tjekker rækker op mod hinanden
            Next
            If Antal = 13 Then    ' hvis der er 13 ens, laves den om
                I = I - 1
                Exit For
            End If
        Next
    Next

    Range("A1:M" & UBound(Tal) + 1) = Tal
    Application.StatusBar = ""
End Sub
Avatar billede bars Nybegynder
21. februar 2007 - 14:14 #4
nu spørger jeg nok lidt dumt, men hvor skal jeg skrive dette?
Avatar billede kabbak Professor
21. februar 2007 - 14:25 #5
I excel
Tryk ALT +F11
i menuen der vælg
Insert > Module

Kopier koden ind på den hvide del

luk på øverste højre x

Nu er du tilbage på arket
Vælg Funktioner > makro
vælg makroen og tryk afspild

Husk at din Makro sikkerhed, ikke må stå til høj
Avatar billede bars Nybegynder
21. februar 2007 - 14:34 #6
SUPER, det var lige hvad jeg manglede, laver du et svar så du kan få nogle points :)
Avatar billede kabbak Professor
21. februar 2007 - 14:42 #7
et svar ;-))
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