reklama

Excel: Generovanie náhodného čísla pri otvorení zošita

V tomto článku spojím dva problémy, s ktorými sa na mňa obraciate. Ten prvý je problém, že pri použití funkcie RND sa stale generuje to isté číslo. Druhý problém je, aby sa číslo generovalo automaticky, po otvorení zošita, respektíve, aby sa automaticky spustilo ľubovolné makro.

Písmo: A- | A+
Diskusia  (0)

Úloha: Pri otvorení zošita sa v bunke A1 vygeneruje náhodné číslo v rozsahu od 1 do 10.

Riešenie: Túto úlohu som najprv riešil pomocou makra. Ale dá sa vyriešiť jednoducho pomocou funkcie RANDBETWEEN. Jednoducho do bunky A1 zadáme funkciu

 =RANDBETWEEN(1;5)

, krorá nám bude generovať čísla od 1 do 5.

Keďže mojim cieľom bolo ukázať automatické spúšťanie makra a generovanie čísla v ňom, tu je postup aj pomocou makra (a tieť vygenerovanie náhodného čísla podľa vlastného algoritmu):

Postup s makrom:

1) Najprv vytvoríme procedúru pre udalosť Open. Na karte Vývojár (Developer) kliknite na tlačidlo Visual Basic. Otvorí sa vám editor kódu. Kliknite dvojklikom na objekt ThisWorkBook (Tento zošit) a pridajte tento kód:

SkryťVypnúť reklamu
Článok pokračuje pod video reklamou
Obrázok blogu

2) Do tejto procedúry teraz pridáme kód na generovanie náhodného čísla. Ako som uviedol v staršom príklade, môžeme použiť funkciu RND.

Konkrétne by sme vložili tento riadok:

Range("A1") = (Int((10 * Rnd) + 1))

Vysvetlenie: Funkcia Rnd() vracia číslo od 0 do 1. Vynásobením 10 dostaneme číslo od 1 do 10. Funckia Int nám zabezpečí, že výsledné číslo bude celé.

Teda vzorec na generovanie čísla v nejakom rosahu použijeme:

Int(horne - dolne +1) * Rnd + dolne))

, kde horne je horné ohraničenie intervalu a dolne je spodné ohraničenie intervalu.

3) Tento vzorec nám generuje to isté číslo, pri každom spustení zošita. Náhodné čísla totiž nie sú v "skutočnosti náhodné". Sú generované postupnosťou čísiel, vypočítanej na základe nejakého algoritmu, alebo funkcie. Preto sa môžeme trochu pohrať, a vygenerovať si svoje "náhodé číslo".

SkryťVypnúť reklamu
reklama

Toto číslo môžeme generovať na základe hodnoty, ktorá sa mení. Najjednoduchšie je použiť čas.

Postup: Po otvorení zošita si zapamatáme čas, a použijeme jeho sekundy. Získame číslo od 0 do 60. Ak chceme číslo od 1 do 10, vydelíme toto číslo 6 a prevedieme ho na celé číslo.

Výsledkom bude číslo, ktoré sa používateľovi bude zdať ako náhodné, ale bude odvodené od času v sekundách, v ktorom používateľ otvoril zošit.

Tu je hotový kód:

Private Sub Workbook_Open()
 
Range("A1") = Int(Second(Now()) / 6)
 

End Sub

Vysvetlenie: Funkcia Now() nám vráti aktuálny dátum a čas. Funkcia Second() z tohto času vyberie sekundy, ktoré vydelíme číslom 6, a pomocou funkcie INT() prevedieme na celé číslo.

SkryťVypnúť reklamu
reklama

Samozrejme, možeme k sekundám pridať ľubovolné číslo, prípadne ho deliť, násobiť.. Fantázii sa medze nekladú;))

Linky s hlbším vysvetlením použitých funkcií:

Automatické spúštanie makra

Funkcia NOW()

Funkcia SECOND()

Funkcia RND()


Lubo Kužela

Lubo Kužela

Bloger 
  • Počet článkov:  36
  •  | 
  • Páči sa:  0x

Moja stránka: lenacor.comV prípade záujmu pomôzem s Excelom.. Ak by ste mali zaujem o skolenie, alebo individuálne konzultácie kontaktujte ma prosím na lubomir.kuzela@gmail.com, predmet "Excel".makrá, kontingenčné tabuľky, grafy, reporty, import údajov, databázy, výpočty, prehľadávanie a analýza dát.. Pracujem ako projektový manažér v priemysle. Zaujímam sa o technológie a ekonómiu. Zoznam autorových rubrík:  InformatikaŠkolstvoEkonomikaPostrehyVedaSúkromnéNezaradenéDenník ítečkára :))

Prémioví blogeri

Juraj Karpiš

Juraj Karpiš

1 článok
Zmudri.sk

Zmudri.sk

3 články
Milota Sidorová

Milota Sidorová

5 článkov
Post Bellum SK

Post Bellum SK

75 článkov
Pavol Koprda

Pavol Koprda

10 článkov
reklama
reklama
SkryťZatvoriť reklamu