Pomysł na wpis powstał z myślą o Mikołajkach i przydzielaniu kto komu ma sprawić prezent. Ale zastosowanie może być znacznie szersze. Losowanie par turniejowych, dyżurów w pracy, minut startowych na zawodach itp.
Wszystkie zamieszczone poniżej przykłady znajdziecie w pliku roboczym.
Imiona i nazwiska pochodzą z mojego generatora działającego w google sheets.
Losuj zakres przy pomocy opcji z menu
Zaznaczamy listę, którą chcemy pomieszać losowo, po czym wybieramy z menu Dane –> Losuj zakres
Wystarczy kliknąć w pozycję w menu i lista zostaje ułożona losowo:
Jak widzicie – losowana jest kolejność dla wszystkich zaznaczonych kolumn.
Losowanie przy pomocy menu jest przydatne jeśli potrzebujemy wykonać tą operację tylko raz. Np. jeśli chcemy ustalić kto komu kupuje prezent na klasowe Mikołajki. Wówczas bierzemy listę alfabetyczną, kopiujemy, wklejamy obok i drugą listę ustawiamy losowo. I mamy gotowe losowe pary:
Przestawiaj listę przy pomocy formuły
Użycie formuły jest lepsze, gdy losowanie jest dla nas tylko etapem w większym procesie lub gdy arkusz będzie używany przez kogoś innego. Warto pamiętać, że formuły losujące są przeliczane przy każdej modyfikacji arkusza.
Proces będzie wyglądał następująco:
- Kopiuję listę alfabetyczną
- Dodaję do niej kolumnę z losowymi liczbami (od 0 do 1)
- Sortuję według losowych liczb
- Chowam kolumnę z losowymi liczbami
Kopiuję listę alfabetyczną:
Dodaję kolumnę z losowymi liczbami:
Żeby posortować listę imion, nazwisk razem z kolumną liczb losowych, musimy zmieścić je w jednym zapisie i ten zapis potraktować funkcją SORT.
Sortujemy tabelę wg kolumny z liczbami losowymi (kolumna nr 4 utworzonej tabeli)
Nie potrzebujemy by oglądający tabelę widzieli mechanizm działania, dlatego przy pomocy funkcji Array_constrain ustalamy, że widoczne będzie 21 wierszy i tylko 3 kolumny (licząc od lewej).
=array_constrain(tabela;ilość wierszy;ilość kolumn)
Jak wybrać osoby losowo z listy np. 3 zwycięzców, dyżurnych, “ochotników”, etc.)
Należy w formule z poprzedniego ćwiczenia ograniczyć ilość wyświetlanych wierszy, do tylu ile nas interesuje:
Sprawiamy, że formuła działa przy dowolnej długości listy
Ponownie używam formuły array_constrain, której zadaniem jest teraz ograniczenie zakresu A4:C, który normalnie wziąłby pod uwagę jeszcze setki pustych wierszy. Tymczasem my potrzebujemy wiedzieć ile ich jest.
array_constrain(zakres;ile wierszy;ile kolumn)
ogranicza nam zakres.
counta(a4:a)
– liczy ile jest wartości w kolumnie a i ogranicza zakres wyłącznie do tych wartości.
Podobnie jest przy generowaniu liczb losowych. counta(a4:a)
mówi, że funkcja Randarray ma wygenerować tylko tyle liczb losowych ile jest pełnych wierszy.
Jeśli chcesz, żeby lista przestała być losowana, musisz skopiować wylosowaną zawartość i wkleić bez formuł (wklej tylko zawartość) Shift + Ctrl +V