0
0 Produkty w koszyku

No products in the cart.

Jak wylosować pozycje z listy bez powtórzeń?

Dostałem zapytanie jak wylosować 2 pozycje z 5 elementów bez powtórzeń. Znalazłem 2 rozwiązania (oba będą działać też dla innej ilości elementów). Oba na początek korzystając z funkcji LOS


Jak wylosować pozycje z listy bez powtórzeń — widzowie #8

Chodzi o to, żeby obok listy elementów ustawić wynik funkcji LOS, czyli losową liczbę od 0 do 1. 

Przykładowe wyniki funkcji LOS dla listy 5 elementów

Przykładowe wyniki funkcji LOS dla listy 5 elementów

Teraz w pierwszym rozwiązaniu kopiujesz wynik i sortujesz go po wielkości liczb (czy rosnąco czy malejąco nie ma znaczenia). Uzyskujesz listę elementów ustawioną losowo. 

Rozwiązanie 1 - posortowane elementy przy czym wyniki funkcji LOS już się zmieniły

Rozwiązanie 1 — posortowane elementy przy czym wyniki funkcji LOS już się zmieniły

Teraz żeby wybrać 2 elementy korzystasz z funkcji INDEKS, której podajesz zakres listy i numery wierszy, które chcesz pobrać:

=INDEKS($E$2:$E$6; WIERSZ(A1))

Rozwiązanie 1 - Wynik z funkcją INDEKS i WIERSZ

Rozwiązanie 1 — Wynik z funkcją INDEKS i WIERSZ

Numer wiersza możesz podać tak jak tu w przykładzie odwołując się do pierwszej komórki (później będzie się ono zmieniać wraz z przeciąganiem formuły w dół).

Drugie rozwiązanie wykorzystuje trudniejszą formułę, ale za to jest dynamiczne, czyli zmienia się wraz ze zmianą wyników funkcji LOS (pierwsze jest stabilne dopóki ponownie nie posortujesz listy).

Zaczynamy od znalezienia k‑tego największego elementu za pomocą funkcji MAX.K, czyli najpierw 1 największy, potem 2 itd.

=MAX.K($A$2:$A$6;WIERSZ(A1))

Ponownie korzystam z odwołania do wiersza by dynamicznie wybierać elementu po kolei.

Następnie trzeba znaleźć pozycję tego elementu, czyli funkcja PODAJ.POZYCJĘ będzie potrzebna. 1 argument to znaleziona k‑ta największa wartość, 2 to zakres przeszukiwania, a 3 mówi o tym, że dopasowanie ma być dokładne (ustawiony na 0).

=PODAJ.POZYCJĘ(MAX.K($A$2:$A$6;WIERSZ(A1));$A$2:$A$6;0)

Teraz wystarczy wykorzystać funkcję INDEKS podobnie jak w 1 przykładzie i uzyskujemy formułę:

=INDEKS($B$2:$B$6;PODAJ.POZYCJĘ(MAX.K($A$2:$A$6;WIERSZ(A1));$A$2:$A$6;0))

Rozwiązanie 2 - Wynik i formułą

Rozwiązanie 2 — Wynik i formułą

P.S.

Jeśli chcesz dowiedzieć się więcej na temat Excela lub nie wiesz jak coś zrobić do mnie o tym w komentarzu pod spodem albo napisz do mnie bezpośrednio, ja w miarę możliwości odpowiem na Twoje pytanie.

Excel i Adam - kontakt

Bezpośredni odnośnik do filmu na youtube — Jak wylosować pozycje z listy bez powtórzeń — widzowie #8