Съдържание
Урокът се фокусира върху това как да направите случайна извадка в Excel без повторения. Ще намерите решения за Excel 365, Excel 2021, Excel 2019 и по-ранни версии.
Преди известно време описахме няколко различни начина за случаен избор в Excel. Повечето от тези решения разчитат на функциите RAND и RANDBETWEEN, които могат да генерират дублиращи се числа. Следователно вашата случайна извадка може да съдържа повтарящи се стойности. Ако ви е необходим случаен избор без дублиращи се числа, използвайте подходите, описани в този урок.
Случаен избор на Excel от списък без дубликати
Работи само в Excel 365 и Excel 2021, които поддържат динамични масиви.
За да направите случаен избор от списък без повторения, използвайте тази обща формула:
INDEX(SORTBY( данни , RANDARRAY(ROWS( данни ))), SEQUENCE( n ))Къде: n е желаният размер на избора.
Например, за да получите 5 уникални произволни имена от списъка в A2:A10, използвайте следната формула:
=INDEX(SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))), SEQUENCE(5))
За улеснение можете да въведете размера на извадката в предварително определена клетка, например C2, и да предоставите референцията към клетката на функцията SEQUENCE:
=INDEX(SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))), SEQUENCE(C2))
Как работи тази формула:
Ето обяснението на логиката на формулата на високо ниво: функцията RANDARRAY създава масив от случайни числа, SORTBY подрежда оригиналните стойности по тези числа, а INDEX извлича толкова стойности, колкото са зададени от SEQUENCE.
Подробна разбивка е представена по-долу:
Функцията ROWS преброява колко реда съдържа вашият набор от данни и предава броя им на функцията RANDARRAY, за да може тя да генерира същия брой случайни десетични числа:
RANDARRAY(ROWS(A2:C10))
Този масив от случайни десетични числа се използва като масив за сортиране по функция SORTBY. В резултат на това първоначалните ви данни се разбъркват на случаен принцип.
От произволно сортираните данни извличате извадка с определен размер. За тази цел предоставяте разбъркания масив на функцията INDEX и заявявате извличане на първия N стойности с помощта на функцията SEQUENCE, която създава последователност от числа от 1 до N Тъй като първоначалните данни вече са сортирани в произволен ред, не ни интересува кои позиции да извлечем, важно е само количеството.
Изберете произволни редове в Excel без дубликати
Работи само в Excel 365 и Excel 2021, които поддържат динамични масиви.
За да изберете произволни редове без повторения, съставете формула по този начин:
INDEX(SORTBY( данни , RANDARRAY(ROWS( данни ))), SEQUENCE( n ), {1,2,...})Къде: n е размерът на извадката, а {1,2,...} са номерата на колоните, които трябва да се извлекат.
Като пример, нека изберем произволни редове от A2:C10 без дублиращи се записи, въз основа на размера на извадката в F1. Тъй като нашите данни са в 3 колони, предоставяме тази константа на масива във формулата: {1,2,3}
=INDEX(SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10))), SEQUENCE(F1), {1,2,3})
И получавате следния резултат:
Как работи тази формула:
Формулата работи с абсолютно същата логика като предишната. Малка промяна, която прави голяма разлика, е, че посочвате и двете row_num и номер на колона аргументи за функцията INDEX: row_num се предоставя от SEQUENCE и номер на колона (column_num) чрез константата на масива.
Как да направите случайна извадка в Excel 2010 - 2019
Тъй като само Excel за Microsoft 365 и Excel 2021 поддържат динамични масиви, функциите за динамични масиви, използвани в предишните примери, работят само в Excel 365. За други версии ще трябва да намерите друго решение.
Да предположим, че искате да направите случаен избор от списъка в A2:A10. Това може да стане с 2 отделни формули:
- Генерирайте случайни числа с формулата Rand. В нашия случай я въвеждаме в B2, след което я копираме надолу до B10:
=RAND()
- Извлечете първата случайна стойност с помощта на следната формула, която въведете в E2:
=INDEX($A$2:$A$10, RANK.EQ(B2, $B$2:$B$10) + COUNTIF($B$2:B2, B2) - 1)
- Копирайте горната формула в толкова клетки, колкото случайни стойности искате да изберете. В този пример искаме 4 имена, затова копираме формулата от E2 до E5.
Готово! Нашата случайна извадка без дубликати изглежда по следния начин:
Как работи тази формула:
Както и в първия пример, използвате функцията INDEX, за да извлечете стойности от колона А въз основа на произволни номера на редове. Разликата е в начина, по който получавате тези номера:
Функцията RAND запълва диапазона B2:B10 с произволни десетични знаци.
Функцията RANK.EQ изчислява ранга на произволно число в даден ред. Например в E2 функцията RANK.EQ(B2, $B$2:$B$10) дава ранг на числото в B2 спрямо всички числа в B2:B10. Когато се копира в E3, относителната референция B2 се променя на B3 и връща ранга на числото в B3 и т.н.
Функцията COUNTIF установява колко срещания на дадено число има в горните клетки. Например в E2 COUNTIF($B$2:B2, B2) проверява само една клетка - самата B2, и връща 1. В E5 формулата се променя на COUNTIF($B$2:B5, B5) и връща 2, защото B5 съдържа същата стойност като B2 (моля, обърнете внимание, че това е само за по-добро обяснение на логиката на формулата; при малък набор от данни има вероятност да се получидублираните случайни числа са близки до нула).
В резултат на това за всички 1-ви случаи COUNTIF връща 1, от което изваждате 1, за да запазите първоначалното класиране. За 2-ри случаи COUNTIF връща 2. Чрез изваждане на 1 увеличавате класирането с 1, като по този начин предотвратявате дублиране на класации.
Например за B2, RANK.EQ връща 1. Тъй като това е първата поява, COUNTIF също връща 1. RANK.EQ + COUNTIF дава 2. А - 1 възстановява ранг 1.
Сега вижте какво се случва в случай на второто появяване. За B5 RANK.EQ също връща 1, а COUNTIF - 2. Като ги съберете, получавате 3, от които изваждате 1. Като краен резултат получавате 2, което представлява ранга на числото в B5.
Рангът се дава на row_num аргумент на функцията INDEX и избира стойността от съответния ред (аргументът номер на колона (column_num) Ако не беше функцията COUNTIF, RANK.EQ щеше да даде 1 и за B2, и за B5, което щеше да накара INDEX да върне стойността от първия ред (Andrew) два пъти.
Как да предотвратите промяната на случайната извадка на Excel
Тъй като всички функции за случаен подбор в Excel, като RAND, RANDBETWEEN и RANDARRAY, са променливи, те се преизчисляват при всяка промяна в работния лист. В резултат на това вашата случайна извадка ще се променя непрекъснато. За да предотвратите това, използвайте функцията Paste Special> Values (Вмъкване на специални> стойности), за да замените формулите със статични стойности. За целта изпълнете следните стъпки:
- Изберете всички клетки с вашата формула (всяка формула, съдържаща функцията RAND, RANDBETWEEN или RANDARRAY) и натиснете Ctrl + C, за да ги копирате.
- Щракнете с десния бутон на мишката върху избрания диапазон и щракнете върху Специално поставяне > Стойности Алтернативно, натиснете Shift + F10 и след това V , което е пряката връзка за гореспоменатата функция.
За подробни стъпки вижте Как да конвертираме формули в стойности в Excel.
Случаен избор в Excel: редове, колони или клетки
Работи във всички версии на Excel 365 до Excel 2010.
Ако в Excel е инсталиран нашият Ultimate Suite, можете да правите случайни извадки с едно щракване на мишката вместо с формула. Ето как:
- На Инструменти на Ablebits щракнете върху Случайно > Изберете на случаен принцип .
- Изберете диапазона, от който искате да изберете извадка.
- В прозореца на добавката направете следното:
- Изберете дали искате да изберете произволни редове, колони или клетки.
- Определете размера на извадката: той може да бъде процент или число.
- Щракнете върху Изберете бутон.
Това е! Както е показано на изображението по-долу, случайната извадка е избрана директно във вашия набор от данни. Ако искате да я копирате някъде, просто натиснете обикновения бърз клавиш за копиране (Ctrl + C) .
Ето как да изберете случайна извадка в Excel без дубликати. Благодаря ви за четенето и се надявам да се видим в нашия блог следващата седмица!
Налични изтегляния
Случайна извадка без дубликати - примери за формули (.xlsx файл)
Ultimate Suite 14-дневна напълно функционална версия (.exe файл)