Like

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ą:

={A4:C24} przenosi zawartość całej tabeli (formuła nie jest kopiowana w dół)

Dodaję kolumnę z losowymi liczbami:

=RANDARRAY(21;1) tworzy zakres o wysokości 21 wierszy i szerokości 1 kolumny i wypełnia go liczbami losowymi z zakresu 0 do 1

Żeby posortować listę imion, nazwisk razem z kolumną liczb losowych, musimy zmieścić je w jednym zapisie i ten zapis potraktować funkcją SORT.

Przy pomocy zapisu klamrowego umieściliśmy w jednym poleceniu tabelę A4:C24, a na prawo od niej tabelę liczb losowych (znak / oznacza, że nowe komórki mają być na prawo od poprzednich. Ważne jest by wynikowa tabela miała kształt prostokątny.

Sortujemy tabelę wg kolumny z liczbami losowymi (kolumna nr 4 utworzonej tabeli)

=sort({{A4:C24}\randarray(21;1)};4;1) – sortuje tabelę wg ostatniej, czyli czwartej kolumny (jedynka na końcu oznacza, że sortowanie ma być rosnące)

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)

=array_constrain(sort({{A4:C24}\randarray(21;1)};4;1);21;3) – tak wygląda cała formuła. Nie ma tu żadnego kopiowania formuł. Zawarta jest w jednej komórce.

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

Do poprzedniej formuły dodajemy elementy liczące ile wierszy jest zapełnionych.

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.