Avatar billede Cale Mester
05. januar 2021 - 13:25 Der er 14 kommentarer og
2 løsninger

Autovælger

Hej

Kan man lave en autovælger eks en et lang liste på fra A1 til A800, en knap hvor den vælger eks antal 15 og blandet?
Avatar billede Jan K Ekspert
05. januar 2021 - 14:15 #1
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.,
Avatar billede Cale Mester
05. januar 2021 - 14:18 #2
Ja 15 tilfældige ud af 800 i kolonne A. Hvis der kan varieret hver gang trykker på knap, hvis det er muligt.
Avatar billede jens48 Ekspert
05. januar 2021 - 14:28 #3
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);""););"")

Gengangere kan forekomme
Avatar billede Cale Mester
05. januar 2021 - 15:02 #4
okay, yes. Tak
Kan jeg udvide data? Den blev taget data fra kolonne A

Jeg har ændre lidt til G1 og til H1.

Det er data fra kolonne A til E

Kan det også med tekster og tal i kolonne H1,I1,J1,K1,L1?
Avatar billede Cale Mester
05. januar 2021 - 15:25 #5
Der er data i A1,B1,C1,D1,E1

Den vil jeg gerne også have at data ligger på H1,I1,J1,K1,L1

Når jeg indtast tal på G1

Er det muligt?
Avatar billede jens48 Ekspert
05. januar 2021 - 16:16 #6
Ja, så bliver det blot til

=HVIS.FEJL(INDEKS($A$1:$A$800;HVIS(RÆKKE()<=$G$1;HELTAL(SLUMP()*800+1);""););"")
Avatar billede jens48 Ekspert
05. januar 2021 - 16:22 #7
Det skulle have været

=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
Avatar billede Cale Mester
05. januar 2021 - 16:26 #8
Yes, super tak :)
Avatar billede Cale Mester
05. januar 2021 - 16:47 #9
Nej, næsten.

Det data fra A1,B1,C1,D1,E1

det bliver ikke det samme som data i A1,B1,C1,D1,E1- i data  H1,I1,J1,K1,L1. Det bliver også blandet
Avatar billede jens48 Ekspert
05. januar 2021 - 17:02 #10
Ups. Jeg er bange for at det kræver en hjælpekolonne.

Antal i G1.
Hjælpekolonne H med denne formel i H1
=HVIS(RÆKKE()<=$G$1;HELTAL(SLUMP()*800+1);"")
Kopieres nedefter

I I1 indsættes
=HVIS.FEJL(INDEKS(A$1:A$800;$H1;);"")
Kopieres til I1:M30 (efter behov)
Avatar billede Cale Mester
05. januar 2021 - 17:16 #11
okay nu forvirrer jeg lidt med formler.
Det er ikke sådan jeg skal gøre?

=HVIS.FEJL(INDEKS(A$1:A$1354;HVIS(RÆKKE()<=$G$1;HELTAL(SLUMP()*800+1);""););"")=HVIS(RÆKKE()<=$G$1;HELTAL(SLUMP()*800+1);"")


=HVIS.FEJL(INDEKS(B$1:B$800;HVIS(RÆKKE()<=$G$1;HELTAL(SLUMP()*800+1);""););"")=HVIS.FEJL(INDEKS(A$1:A$800;$H1;);"")
Avatar billede Cale Mester
05. januar 2021 - 19:39 #12
Hvordan kan jeg så "fastgør" det der blev hentet data?

Hver gang når jeg dobbeltklik på hvor som helst ændre hele tiden det 15 data. Eller når jeg dobbeltklik på mellem A&B

Kan ikke finde noget at når man ændre kun antal at det ændre data?
Avatar billede jens48 Ekspert
05. januar 2021 - 20:02 #13
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
Avatar billede Cale Mester
06. januar 2021 - 12:24 #14
Yes tusind tak.

Sidste spørgsmål:
Hvis der er flere eller færre kolonner, kan man hente dem kun der er indhold kolonner?

Eks. når der er kolonner 1000,1235,125, 700,500?

Jeg har ellers ændre 800 til eks 1354. så den henter tomme kolonne også.
Avatar billede jens48 Ekspert
06. januar 2021 - 12:48 #15
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
Avatar billede jens48 Ekspert
06. januar 2021 - 13:43 #16
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.
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

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