Om du vill skapa en lista med unika slumpmässiga nummer kan du använda RANDBETWEEN -funktioner och VBA RND. I den här artikeln kommer vi att generera 3 unika nummer från listan.
Du hittar den ursprungliga frågan här
Fråga: Jag vill att ett makro ska generera en lista med 3 slumpmässiga nummer från en lista med nummer som sparats i kolumn A. Det finns ett villkor att VBA -koden måste tas om hand. Villkoret är att det finns tre nummer som finns i kolumn B, därför måste makro skapa en lista med nummer som inte har förekommit en gång i kolumn B. På så sätt kan vi ha en lista med unika nummer i kolumn B & C.
Följande är ögonblicksbilden av exemplet som vi har:
För att få listan över unika slumpmässiga nummer; vi måste följa stegen nedan för att starta VB -editor
- Klicka på fliken Utvecklare
- Välj Visual Basic i kodgruppen
- Kopiera koden nedan i standardmodulen
Sub RandomNumbers () Dim ws As Worksheet Dim ar As Variant Dim RandomNum As Long Dim i As Integer Dim myVal As Long Randomize Set ws = ThisWorkbook.Sheets ("Numbers") With ws ar = .Range ("A" & Rows.Count ) .End (xlUp) .Row .Range ("C1: C3"). ClearContents For i = 1 To 3 Do RandomNum = Int ((1 - ar + 1) * Rnd + ar) myVal = .Range ("A" & RandomNum) .Value Loop Till intervall ("B1: C24"). Hitta (vad: = myVal, lookat: = xlWhole) är ingenting .Range ("C" & i) .Value = myVal Nästa i slut med slutsub
- För att köra makrot kan vi trycka på F5 -tangenten från tangentbordet om du är aktiv på Visual Basic Editor -skärmen
- Ett annat sätt att köra makrot är att använda “ALT + F8” -tangenten; välj makrot och klicka på Kör -knappen
- När vi kör VBA -koden genereras den unika listan med nummer automatiskt
Kodförklaring:
I ovanstående kod kommer vi att använda RND & INT -funktionen tillsammans med For loop & Do loop för att få resultatet.
- Vi förklarar Dim ws som arbetsblad; syftet med att deklarera ws som kalkylblad är att vi bara vill att koden ska köras på ett specifikt kalkylblad, dvs. siffror i vårt exempel
- Dim RandomNum As Long: detta sparar unika nummer
- Set ws = ThisWorkbook.Sheets ("Numbers"): den här raden säkerställer att koden bara körs på Numbers blad
- Nästa kodrad använder With -sats
- ar = .Range ("A" & Rows.Count) .End (xlUp) .Rad: den här raden sparar den sista cellen i kolumn A (24 i vårt exempel)
- .Range ("C1: C3"). ClearContents: denna rad raderar allt befintligt innehåll i intervall C1: C3
- Därefter kommer vi att köra For loop från 1 till 3 gånger med Do Loop för att generera lista över slumpmässiga nummer och kontrollera inga dubbletter i befintligt intervall, dvs kolumn B
Slutsats: Vi kan generera lista med distinkta slumpmässiga nummer från en lista i Microsoft excel med små tweaking i ovanstående VBA -kod.
Om du gillade våra bloggar, dela den med dina vänner på Facebook. Och du kan också följa oss på Twitter och Facebook.
Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra, komplettera eller förnya vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen