Jeg er ikke helt klar over, hvad du mener. Skal den vælge 15 tilfældige ud af de 800 elementer, der står i A-kolonnen? Eller hvad skal der forstås ved Blandet.,
Hvis du har antallet af tilfældige valg i D1 kan denne formel i f.eks E1 og kopieret nedefter bruges:
=IFERROR(INDEX($A$1:$A$800;IF(ROW()<=$D$1;INT(RAND()*800+1);""););"") På dansk: =HVIS.FEJL(INDEKS($A$1:$A$800;HVIS(RÆKKE()<=$D$1;HELTAL(SLUMP()*800+1);""););"")
=IFERROR(INDEX(A$1:A$800;IF(ROW()<=$G$1;INT(RAND()*800+1);""););"") eller på dansk =HVIS.FEJL(INDEKS(A$1:A$800;HVIS(RÆKKE()<=$G$1;HELTAL(SLUMP()*800+1);""););"")
Skal indsættes i H1 og kopieres til H1:L30 eller hvor langt ned du har behov for
Så skal du nok bruge en makro i stil med denne. Den henter det antal tilfældige valg, som du har tastet ind i G1
Sub Valg() Dim Antal, x, y, z As Integer Range("H1:L800").ClearContents z = 1 Antal = Range("G1") For x = 1 To Antal y = Int(Rnd() * 800 + 1) Range("A" & y & ":E" & y).Copy Destination:=Cells(z, 8) z = z + 1 Next End Sub
Først en bemærkning om terminologi: Jeg går ud fra at du mener rækker, når du skriver kolonner
Denne makro tæller antallet af rækker og vælger kun fra de fyldte rækker.
Sub Valg() Dim Antal, LastRow, x, y, z As Integer Application.Calculation = xlCalculationManual LastRow = Cells(65356, 1).End(xlUp).Row Range("H1:L" & LastRow).ClearContents z = 1 Antal = Range("G1") For x = 1 To Antal Do y = Int(Rnd() * LastRow + 1) Range("A" & y & ":E" & y).Copy Destination:=Cells(z, 8) Loop Until WorksheetFunction.CountIf(Range("H1:H" & x), Range("H" & x)) = 1 z = z + 1 Next x Application.Calculation = xlCalculationAutomatic End Sub
Jeg skrev i #3 at gengangere kunne forekomme. Det sker ikke med den seneste makro. Med den kan hver valgt linie kun forekomme en gang.
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.