Avatar billede mortenus Nybegynder
18. august 2007 - 14:41 Der er 14 kommentarer og
4 løsninger

random(blande) funktion i excel

Hej. jeg har et lille problem med en excel funktion. Derfor håber der sidder nogle derude med lidt ekspertice de vil dele ud af.

Jeg har ca 30 navne som står i en kolonne som skal kunne shuffles. Dvs blandes i en tilfældig rækkefølge hver gang.

Det skal helst være sådan at man kan markere nogle af dem og at disse bliver blandet, eller at man kan vælge et shufflet outcome på 10-14 stk ud af de 30.

Har forsøgt mig med RAND() funktionen men det funger ikke rigtigt.
Avatar billede kabbak Professor
18. august 2007 - 15:00 #1
her er en makro til at blande de valget, NB de skal stå i en kolonne

Public Sub BlandValgte()
    Dim Valgte As Variant, Udvalgte() As Variant
    Dim I As Integer, R As Integer, Antal As Integer
    Randomize
    Valgte = Selection
    Antal = UBound(Valgte)
    ReDim Udvalgte(Antal)
    For I = 1 To Antal
        Do
            R = Int((Antal * Rnd) + 1)
            If Not IsEmpty(Valgte(R, 1)) Then
                Udvalgte(I - 1) = Valgte(R, 1)
                Valgte(R, 1) = Empty
                Exit Do
            End If
        Loop
    Next
    'næste linie skriver i C kolonnen, det er 3 tallet der bestemmer kolonnen
    Range(Cells(1, 3), Cells(Antal + 1, 3)) = Application.WorksheetFunction.Transpose(Udvalgte)
End Sub
Avatar billede kabbak Professor
18. august 2007 - 15:11 #2
her er den der tager det antal du ønsker ud fra alle

Public Sub BlandValgteAntal()
    Dim Valgte As Variant, Udvalgte() As Variant
    Dim I As Integer, R As Integer, Antal As Integer, Ud As Integer, OK As Integer
    Randomize
    Valgte = Range(Range("A1"), Range("A1").End(xlDown))
    Antal = Range(Range("A1"), Range("A1").End(xlDown)).Rows.Count
    Ud = InputBox("hvor mange skal vælges")
    OK = 0
    ReDim Udvalgte(Antal)
    For I = 1 To Antal
        Do
            R = Int((Antal * Rnd) + 1)
            If Not IsEmpty(Valgte(R, 1)) Then
                Udvalgte(I - 1) = Valgte(R, 1)
                Valgte(R, 1) = Empty
                OK = OK + 1
                Exit Do
            End If
        Loop
        If OK = Ud Then Exit For
    Next
    'næste linie skriver i C kolonnen, det er 3 tallet der bestemmer kolonnen
    Range(Cells(1, 3), Cells(Antal + 1, 3)) = Application.WorksheetFunction.Transpose(Udvalgte)
End Sub
Avatar billede mortenus Nybegynder
18. august 2007 - 15:23 #3
tak for hjælpen, det er fandme smukt..

oprettede lige en ny makro, kaldte den RAndom, satte din kode ind og vupti, så blender den hvad jeg markerer og bruger makroen under tools.

Sig til hvis jeg har gjort noget forkert??
det er vist dine point
Avatar billede mortenus Nybegynder
18. august 2007 - 15:24 #4
ok har ikke lige prøvet din anden version ...  Det må til senere
tak for hjælpen
Avatar billede kabbak Professor
18. august 2007 - 15:28 #5
lyder godt,
den første blander kun sammenhængende markering.
den anden tager det antal du vælger ud af alle navne

jeg har modificeret den første, nu kan den klare multiselect, flere ikke sammenhængende markerede.


Public Sub Bland()
    Dim Valgte() As Variant, Udvalgte() As Variant
    Dim I As Integer, R As Integer, Antal As Integer, A As Integer, L As Integer
    Randomize
    A = Selection.Cells.Count
    ReDim Valgte(A)
    L = 0
    For Each c In Selection.Cells
    Valgte(L) = c
    L = L + 1
    Next
      Antal = UBound(Valgte)
    ReDim Udvalgte(Antal)
    For I = 0 To Antal - 1
        Do
            R = Int((Antal * Rnd))
            If Not IsEmpty(Valgte(R)) Then
                Udvalgte(I) = Valgte(R)
                Valgte(R) = Empty
                Exit Do
            End If
        Loop
    Next
    'næste linie skriver i C kolonnen, det er 3 tallet der bestemmer kolonnen
    Range(Cells(1, 3), Cells(Antal + 1, 3)) = Application.WorksheetFunction.Transpose(Udvalgte)
End Sub
Avatar billede kabbak Professor
18. august 2007 - 15:29 #6
Et svar ;-))
Avatar billede mortenus Nybegynder
18. august 2007 - 19:07 #7
kan ikke få nummer 2 til at virke, selvom det ville være fedt. har gjort som før men har nok lavet en fejl.

excel kokser bare og jeg bliver nødt til at lukke programmet.
Avatar billede mortenus Nybegynder
18. august 2007 - 19:10 #8
kan ikke lige se hvordan jeg skal vælge antal navne
Avatar billede mortenus Nybegynder
18. august 2007 - 19:17 #9
sorry. nr 2 virker fint.. Utroligt
Avatar billede mortenus Nybegynder
19. august 2007 - 01:23 #10
findes der en måde hvorpå man kan sammenkoble kolonner, og stadig bibeholde metode to som du bekriver så flot. Eksemplet kunne være at kolonne A2 skal være låst med kolonne D2, og så og fremdeles.

på den måde kan man have noget tekst tilknyttet til feltet i A2 i D2, og det skulle helst være sådan at når man så blander følger informationen I cellen D2 med.

tak for eksperticen
Avatar billede kabbak Professor
19. august 2007 - 11:14 #11
I øjeblikket skriver den i C kolonnen, hvis den skal have det med i D kolonnen, hvor skal den så skrive det ??.

det bliver jo overskrevet, hvis det skal være der.
Avatar billede excelent Ekspert
19. august 2007 - 18:22 #12
Har modificeret kabaks kode lidt
forudsætter du selecter i kolonne A, så rettes kolonne D med

Public Sub Bland()
    Dim Valgte() As Variant, Udvalgte() As Variant
    Dim I As Integer, R As Integer, Antal As Integer, A As Integer, L As Integer
    Dim adr(100), Valgte2(100), Udvalgte2(100)
    Randomize
    A = Selection.Cells.Count
    ReDim Valgte(A)
    L = 0
    For Each c In Selection.Cells
    Valgte(L) = c: adr(L) = c.Row: Valgte2(L) = c.Offset(0, 3)
    L = L + 1
    Next
      Antal = UBound(Valgte)
    ReDim Udvalgte(Antal)
    For I = 0 To Antal - 1
        Do
            R = Int((Antal * Rnd))
            If Not IsEmpty(Valgte(R)) Then
                Udvalgte(I) = Valgte(R): Udvalgte2(I) = Valgte2(R)
                Valgte(R) = Empty: Valgte2(R) = Empty
                Exit Do
            End If
        Loop
    Next
   
    For t = 0 To Antal - 1
    Cells(adr(t), 1) = Udvalgte(t): Cells(adr(t), 4) = Udvalgte2(t)
    Next
End Sub
Avatar billede excelent Ekspert
26. august 2007 - 15:49 #13
tjaa mortenus så er det bare dig vi venter på !!!
Avatar billede mortenus Nybegynder
28. august 2007 - 23:47 #14
dette er koden der virker som oprindeligt tænkt. godt gået, i er begge skrappe!!!
tak for hjælpen.
Avatar billede excelent Ekspert
01. september 2007 - 16:01 #15
Du afslutter dine gamle spørgsmål ved at markere de navne som skal have point og klikke accepter.
Avatar billede mortenus Nybegynder
01. september 2007 - 23:47 #16
ok har nu forsøgt at give point. håber det er ok.
Avatar billede excelent Ekspert
02. september 2007 - 17:43 #17
nej det en ommer :-)
- flag er stadig gul
Avatar billede mortenus Nybegynder
02. september 2007 - 18:39 #18
ok, skulle lige se scroll down menuen til venstre... takker
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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