Wygeneruj 3 unikatowe liczby losowe w programie Microsoft Excel

Anonim

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