14. september 2004 - 13:21Der er
18 kommentarer og 1 løsning
Lodtrækning i EXCEL tilfældige tal.
Hej Jeg ville hører om nogen af jer kloge Excel programmører kan hjælpe mig.
Jeg har et excel ark med 2 kolonner (navn ; Lønnummer) og der er 32 linjer, hvis jeg skal have et tilfældigt tal ud for hver person som skal ligge mellem 1 - 32 hvordan gør jeg det?
Du kan kopiere nedenstående funktion ind i dit regneark. Så skal du markere alle 32 celler og trykke F2 og skrive =randInt(1;32) Når det er skrevet trykker du Ctrl-Shift-Enter - derved fyldes formlen ud i alle felterne.
Public Function RandInt(Optional ByVal nStart As Long = 1&, Optional ByVal nEnd As Long = -2147483647) As Variant Dim vArr As Variant Dim vResult As Variant Dim nCount As Long Dim nTemp As Long Dim nRand As Long Dim i As Long Dim j As Long Application.Volatile If TypeName(Application.Caller) <> "Range" Then Exit Function With Application.Caller ReDim vResult(1 To .Rows.Count, 1 To .Columns.Count) nCount = .Count If nEnd < nStart Then nEnd = nStart + nCount - 1 If nCount > nEnd - nStart + 1 Then RandInt = CVErr(xlErrNum) Exit Function ElseIf nCount = 1 Then RandInt = CLng((nEnd - nStart) * Rnd() + nStart) Exit Function End If End With ReDim vArr(0 To nEnd - nStart) For i = 0 To UBound(vArr) vArr(i) = i + nStart Next i For i = UBound(vArr) To 1 Step -1 nRand = Int(Rnd() * (i + 1)) nTemp = vArr(nRand) vArr(nRand) = vArr(i) vArr(i) = nTemp Next i nCount = 0 For i = 1 To UBound(vResult, 1) For j = 1 To UBound(vResult, 2) vResult(i, j) = vArr(nCount) nCount = nCount + 1 Next j Next i RandInt = vResult End Function
- Skriv numrene 1 - 32 i f.eks. B1:B32 - I A1 skriver du så =SLUMP() og kopierer denne formel til A2:A32 - Marker A1:B32 og vælg f.eks. "Sorter stigende"
Så vil begge kolonner sorteres efter de tilfældige tal i kolonne A. Fordelen frem for RandInt-funktionen er, at numrene fra 1 til 32 IKKE ændrer sig hver gang der genberegnes.
Jeg forstår ikke helt, Jeg kopier hele den smører der starter med Public function og slutter med End Function ind et vilkårligt sted i regnearket.
Derefter trykker jeg =randInt(1;32) ind så der kommer til at stå " =randint(1;32)navn " i kolonne 1 og " =randInt(1;32) lønnummer " i kolonne 2, det sker der ikke rigtigt noget med.
Skulle den lave en kolonne 3 med det tilfældige nummer i? jeg kan ikke se at der overhovede er en kommando der hedder noget med =randInt(1;32)
Public Sub Rand32() Dim Sel As Variant Sel = Selection For i = 1 To UBound(Sel) OM: V = Int(Rnd * 32) + 1 Sel(i, 1) = V If i > 1 And i < 33 Then For A = 1 To i - 1 If Sel(A, 1) = V Then GoTo OM Next End If Next Selection = Sel End Sub
Her er en der lacer tilfældig over det antal celler der er makeret. Markering kun i 1 kolonne
Public Sub Rand32() Dim Sel As Variant Sel = Selection Maks = UBound(Sel) For i = 1 To Maks OM: V = Int(Rnd * Maks) + 1 Sel(i, 1) = V If i > 1 And i < Maks + 1 Then For A = 1 To i - 1 If Sel(A, 1) = V Then GoTo OM Next End If Next Selection = Sel End Sub
Gammel tråd, men altid en fornøjelse at finde det man søger.
Nu fik du tilsyneladende ingen point dengang (uvist hvorfor)... så vil da gerne lige komme med en tak i det mindste!
Synes godt om
Ny brugerNybegynder
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.