Jeśli chcesz wygenerować listę unikalnych liczb losowych, możesz użyć funkcji RANDBETWEEN i VBA RND. W tym artykule wygenerujemy 3 unikalne numery z podanej listy.
Tutaj znajdziesz oryginalne pytanie
Pytanie: Chcę, aby makro generowało listę 3 losowych liczb z listy liczb zapisanej w kolumnie A. Jest warunek, że należy zadbać o kod VBA. Warunkiem jest to, że w kolumnie B występują 3 liczby, stąd makro musi utworzyć listę liczb, które ani razu nie wystąpiły w kolumnie B. W ten sposób możemy mieć listę unikalnych liczb w kolumnie B i C.
Poniżej znajduje się migawka przykładu, który mamy:
Aby uzyskać listę unikalnych liczb losowych; musimy wykonać poniższe kroki, aby uruchomić edytor VB
- Kliknij kartę Deweloper
- Z grupy Kod wybierz Visual Basic
- Skopiuj poniższy kod w standardowym module
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 do 3 Wykonaj RandomNum = Int((1 - ar + 1) * Rnd + ar) myVal = .Range("A" & RandomNum).Value Pętla do zakresu("B1:C24").Find(what:=myVal, lookat:=xlWhole) jest niczym .Range("C" & i).Value = myVal Next i End with End Sub
- Aby uruchomić makro, możemy nacisnąć klawisz F5 z klawiatury, jeśli jesteś aktywny na ekranie Edytora Visual Basic
- Innym sposobem uruchomienia makra jest użycie klawisza „ALT + F8”; wybierz makro i kliknij przycisk Uruchom
- Po uruchomieniu kodu VBA automatycznie zostanie wygenerowana unikalna lista numerów
Wyjaśnienie kodu:
W powyższym kodzie użyjemy funkcji RND & INT wraz z pętlą For i pętlą Do, aby uzyskać wynik.
- Deklarujemy Dim ws jako Arkusz; celem deklarowania ws jako arkusza roboczego jest to, że chcemy, aby kod działał tylko w określonym arkuszu, tj. Liczby w naszym przykładzie
- Dim RandomNum As Long: spowoduje to zapisanie unikalnych liczb
- Set ws = ThisWorkbook.Sheets("Numbers"): ten wiersz zapewni, że kod będzie działał tylko w arkuszu Numbers
- Następny wiersz kodu będzie używał instrukcji With
- ar = .Range("A" & Rows.Count).End(xlUp).Row: ta linia zapisze ostatnią komórkę w kolumnie A (24 w naszym przykładzie)
- .Range("C1:C3").ClearContents: ta linia usunie wszelką istniejącą zawartość w zakresie C1:C3
- Następnie uruchomimy pętlę For zaczynając od 1 do 3 razy za pomocą Do Loop, aby wygenerować listę liczb losowych i sprawdzić brak duplikatów w istniejącym zakresie, tj. Kolumna B
Wniosek: Możemy wygenerować listę różnych liczb losowych z listy w programie Microsoft Excel z niewielkimi poprawkami w powyższym kodzie VBA.
Jeśli podobały Ci się nasze blogi, podziel się nimi ze znajomymi na Facebooku. A także możesz śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy ulepszyć, uzupełnić lub unowocześnić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail