VBATools

Losowanie osób, miast czy grup

by on Mar.04, 2019, under Newsy

Użytkownicy excela wiedzą jaki kłopot jest z formułami losującymi. Arkusz kiepsko chodzi, przeliczając się dość długo, czasem inne obiekty dodane na arkusz pływają i to nie dlatego że nasza wersja lub moc komputera jest niewystarczająca, ale dla tego że stosujemy formułę los(), teraz() lub dziś() dającą dynamiczny wynik. Z drugiej strony jakakolwiek ingerencja w komórki przekazuje polecenie do ponownego obliczenia, co może być kłopotliwe dla utrzymania raz wylosowanych wartości. W takim razie co zrobić aby losować je jednorazowo i nie obciążać arkusza takimi formułami?

Działając całkowicie ręcznie, trzeba by zmieniać formuły los() po jednorazowym ich obliczeniu na wartości (niszcząc ich składnię/parametry), albo przenieść obliczenia do VBA korzystając z funkcji arkuszowych podając sam wynik, no tak, ale jak ktoś ma słabość do programowania… Do tego dochodzi losowanie z powtórzeniami i bez…. bo bez formuła nie zrealizuje i sprawa zaczyna się lawinowo komplikować.

Powstała zatem kostka do gry, którą można wykorzystać do losowania danych tekstowych. Prosta i stała formuła indeks() (nie reagujaca na zdarzenia), na podstawie istniejącej listy wyrazów pobierze wygenerowaną listę wystąpień losowych. Losujące liczby wpisują się jako wartości, a więc nie zachodzi prawdopodobieństwo ich późniejszej zmiany po nieumyślnej edycji innego obszaru arkusza lub po ponownym otwarciu arkusza, co spowoduje ponowne ich przeliczenie. W tym przypadku losowany wynik zależy od rzutów kostki czyli zewnętrznego dodatku Excela.

Obszar w jakim znajdują się wyrazy zamieniamy na tabelę danych oraz tworzymy nową 2 kolumnową tabelę z nagłówkiem dla numeru losowania oraz formuły indeks (tylko D2:E3). Potem uruchamiamy kostkę w komórce D3 i tabela danych nam się automatycznie poszerza, tworząc listę wylosowanych pól losowych.

Oto przykład zastosowania takiego losowania dla przykładu unikatowych wartości przy zastosowaniu hipotetycznej listy elementów:

W ten sposób wszelkie rozgrywki oparte na losowym generowaniu meczy stają się bardzo proste i bardzo szybkie do uzyskania. Wynik jest uzależniony od ustawień interfejsu kostki co jest dość czytelne dla użytkownika. Podczas losowania takiej listy należy tylko pamiętać aby ustawić jedynie jedną serię losowania, aby nie nadpisać formuł indeks.

:, ,

Leave a Reply