Excel VBA: Generator liczb losowych bez duplikatów (4 przykłady)

  • Udostępnij To
Hugh West

Ten artykuł ilustruje 4 przykłady generator liczb losowych bez duplikatów za pomocą VBA w Excelu. Tutaj użyjemy wbudowanej funkcji Rnd programu Excel, aby skonfigurować nasz kod. Zanurzmy się w przykładach, aby poznać techniki generowania unikalnych liczb losowych.

Pobierz Zeszyt ćwiczeń

Pobierz ten zeszyt ćwiczeń, aby ćwiczyć podczas czytania tego artykułu.

Generator liczb losowych bez duplikatów.xlsm

4 Przykłady generatora liczb losowych bez duplikatów w Excelu VBA

Napisz kod w edytorze Visual Basic

Do generowanie liczb losowych bez duplikatów , musimy otwórz oraz napisać kod VBA w edytor visual basic. Podążaj za kroki do otwórz the edytor visual basic i napisać tam jakiś kod.

  • Idź do Deweloper zakładka z Wstążka programu Excel .
  • Kliknij the Opcja Visual Basic.

  • W Visual Basic For Applications kliknij przycisk Wstawianie rozwijania do wybierz the Nowy moduł opcja.

Teraz połóż swój kod wewnątrz wizualny edytor kodu oraz naciśnij F5 do uruchomić to.

1. Zastosowanie funkcji VBA Rnd do generowania liczb losowych bez duplikatów

Na stronie Funkcja Rnd jest stosowany w Excel VBA do generować liczby losowe które są między 0 oraz 1 ekskluzywny.

Zadanie : Wygeneruj 10 liczb losowych między 0 oraz 1 w komórki A1:A10.

Kod : Wkładka następujący kod w edytor visual basic i nacisnąć F5 do uruchomić to.

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

Wyjście : Powyższy zrzut ekranu pokazuje. 10 unikalnych liczb losowych w zakres 0 i 1.

Kod Wyjaśnienie:

W tym kodzie użyliśmy Funkcja Rnd do wstawić liczby losowe w zakres komórek A1:A10 . Przed wstawianie a nowy numer , użyliśmy Pętla "Do While do zajrzyj na stronę dla numer w predefiniowany zakres komórek (A1:A10) czy to już istnieje lub nie Aby sprawdzić istnienie z numer w zakres komórek za każdym razem, skonfigurowaliśmy kod z Funkcja COUNTIF Ta funkcja sprawdza a nowa liczba losowa w wykaz z już istniejących numerów przed jego wstawieniem.

Read More: Excel Formuła do generowania liczb losowych (5 przykładów)

2. Generator liczb losowych dla zdefiniowanych Lowerbound i Upperbound bez duplikatów

Do generować liczby losowe w ramach określony zakres , musimy ustawić lowerbound oraz upperbound w naszym kodzie VBA. Dla informacji,. lowerbound to najniższa liczba i upperbound to największa liczba w zakres dla generatora liczb losowych. Możemy użyć następującego formuła w naszym kodzie.

(górna granica - dolna granica + 1) * Rnd + dolna granica

2.1 Generator liczb losowych - dziesiętny

Zadanie : Wygeneruj 10 liczb losowych między 10 oraz 20 w komórki A1:A10.

Kod : Wkładka następujący kod w edytor visual basic i nacisnąć F5 do uruchomić to.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =.randomNumber Next End Sub 

Wyjście : Powyższy zrzut ekranu pokazuje. 10 unikalnych liczb losowych w zakres od 1 do 10.

2.2 Generator liczb losowych - Integer

Na tej ilustracji użyjemy Funkcja VBA Int do usunąć the część ułamkowa od liczby losowe .

Zadanie : Wygeneruj 20 losowych liczb całkowitych między 1 oraz 20 w komórki A1:B10.

Kod : Wkładka następujący kod w edytor visual basic i nacisnąć F5 do uruchomić to.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Next End Sub 

Wyjście : Powyższy zrzut ekranu pokazuje. 20 unikalnych losowych liczb całkowitych w zakres od 1 do 20.

Read More: Generator liczb losowych w Excelu bez powtórzeń (9 metod)

Podobne lektury

  • Generator liczb losowych z narzędziem do analizy danych i funkcjami w Excelu
  • Jak wygenerować dane losowe w Excelu (9 prostych metod)
  • Generator liczb losowych 5 cyfr w Excelu (7 przykładów)
  • Generator liczb losowych 4-cyfrowych w Excelu (8 przykładów)
  • Wygeneruj losowy numer z listy w Excelu (4 sposoby)

3. Określ miejsca dziesiętne dla unikalnego generatora liczb losowych w Excelu VBA

Możemy użyć Okrągła funkcja w naszym kodzie do podać the numer z miejsca dziesiętne w losowo wygenerowane unikalne numery . składnia funkcji jest-

Round(expression, [numdecimalplaces])

Musimy podać the 2. argument zgodnie z naszym wymóg .

Zadanie : Wygenerowanie 20 liczb losowych z 2 miejscami po przecinku między 1 oraz 20 w komórki A1:B10.

Kod : Wkładka następujący kod w edytor visual basic i nacisnąć F5 do uruchomić to.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Loop Rng.Value = randomNumber Next End Sub 

Wyjście : Powyższy zrzut ekranu pokazuje. 20 unikalnych losowych liczb całkowitych z 2 miejscami po przecinku w zakres od 1 do 20.

Read More: Wygeneruj losową liczbę w Excelu z liczbami dziesiętnymi (3 metody)

4. Opracuj formularz użytkownika dla generatora liczb losowych bez duplikatów w Excelu VBA

Na tej ilustracji pokażemy, jak używać przycisku UserForm w Excel VBA do generować liczby losowe z brak duplikatów .

Zadania: Wygeneruj 20 liczb losowych w zakresie komórek A1:B10 przy użyciu UserForm z wartości wejściowe (i) lowerbound (ii) upperbound (iii) liczba miejsc po przecinku.

Utwórz formularz UserForm:

Wykonaj poniższe kroki, aby utworzyć UserForm z naszym pożądane pola wprowadzania danych .

  • Idź do Deweloper zakładka z Wstążka programu Excel .
  • Kliknij the Opcja Visual Basic.

  • W Visual Basic For Applications kliknij przycisk Wstawianie rozwijania do wybierz the UserForm opcja.

  • W UserForm dodaj a etykieta .
  • Caption the etykieta jako LowerBound we właściwościach.

  • Dodaj dwa więcej etykiety o nazwie Upperbund oraz DecimalPlaces .

  • Teraz dodaj trzy TextBoxy w UserForm .

  • Na tym etapie, dodać a CommandButton i nazwać go Wygeneruj .

  • Teraz, dwukrotne kliknięcie the CommandButton i umieścić kod w edytor kodu .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • Naciśnij F5 do uruchomić the kod i UserForm ma pojawił się .
  • Połóż lowerbound , upperbound, i numer z miejsca dziesiętne w UserForm i trafić Generuj Przycisk .

Wyjście : W komórki A1:B10 , są 20 liczb losowych z 2 miejsca po przecinku w w zakresie od 1 do 30.

Read More: Jak wygenerować losowe liczby bez duplikatów w programie Excel (7 sposobów)

Rzeczy do zapamiętania

  • Mogliśmy również użyć Funkcja Fix zamiast Funkcja Int do generować unikalne liczby całkowite . funkcja usuwa the część ułamkowa z numer podobnie jak Funkcja Int .

Wniosek

Teraz wiemy jak generować unikalne liczby losowe za pomocą VBA w Excelu z pomocą odpowiednich przykładów. Mamy nadzieję, że pomoże Ci to pewniej korzystać z tej funkcjonalności. Wszelkie pytania lub sugestie nie zapomnij umieścić w polu komentarza poniżej.

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.