Як вибрати випадковий елемент у списку, не позначений у другому стовпці?


0

Отже, я дивлюся фільми, і у мене є 177 з них, я розмістив усі заголовки в стовпці А, і зрозумів, як зробити Рандомізацію для виведення назв, але я хочу мати стовпець, також для його перегляду , і якщо його було переглянуто, пропустіть переглянуті фільми, доки не буде переглянуто всі фільми. мій кодекс до цих пір:

=INDIRECT("B"&RANDBETWEEN(1;COUNTA(B21:B178)))

Яке питання?
a CVn

Так що у мене є список фільмів, і кожен раз я дивлюся один у мене є інший стовпець для мене, щоб позначити, якщо я дивився його чи ні, відзначений так, інакше залишилося порожнім, і з моїм кодом, він випадково вибирає фільм, але я потрібно, щоб випадковим чином вибрати фільм, який я не дивився.
Josh Staats

Відповіді:


0

Моя пропозиція - додати стовпець із випадковим числом. Потім відсортуйте всю річ на випадкове число. Переглядайте фільми у вказаному порядку. Після того, як ви все переглянули їх, оновіть і відсортуйте список.

    239 Movie A
    475 Movie B
    683 Movie C
    241 Movie D
    748 Movie E

Після сортування (в Excel - я вважаю, що OOCalc зробить те ж саме) випадкові числа відновляться:

    145 Movie A
    978 Movie D
    783 Movie B
    322 Movie C
    773 Movie E

Випадкові числа також регенеруються, коли ви закриваєте і відкриваєте файл (знову ж таки, принаймні в Excel), тому не сортуйте знову, поки ви повністю не перейдете в список.

Якщо ви дійсно хочете отримати детальнішу інформацію, наприклад, якщо ви також хочете переконатися, що ви не дивитеся один і той же фільм двічі протягом 30 днів (IE, уникайте випадкової можливості, що останній фільм одного роду стає першим фільмом наступного сортування), ви можете використовувати стовпець як мітку часу, коли ви його останнім часом спостерігали, а потім просто додайте 30 плюс деяке випадкове число, а потім відсортуйте. Ви навіть можете додати стовпець другого випадкового числа, щоб забезпечити більшу випадковість у випадковому часі, коли одна й та ж випадкова кількість генерується для більш ніж одного фільму.

Варіації та можливості практично нескінченні.


Хоча, я люблю це, але я думаю, що якщо заява може працювати, де я використовую свій код, а потім використовувати Якщо це правда, я не дивився фільми, то, він залишається, інакше Він намагається знову.
Josh Staats

В основному мені цікаво, як це зробити правильно. =INDIRECT("B"&RANDBETWEEN(1;COUNTA(B2:B178)))IF(C2:C178; ;=INDIRECT("B"&RANDBETWEEN(1;COUNTA(B2:B159))))
Josh Staats

Існує проблема з таким підходом, що ви не хочете двічі переглядати один і той же фільм. Ось приклад ситуації - скажімо, у вас 5000 назв фільмів. Використовуючи свою функцію, ви спостерігали половину. Тепер, кожен раз, коли ви хочете подивитися новий, ваша функція поверне фільм, який ви вже спостерігали вдвічі, так що його потрібно знову вибрати. Після того як ви спостерігали 3/4, воно поверне той, який ви дивилися 3/4 часу. До того часу, коли ви будете дивитися 4999 .. ваша функція повинна була б обертатися навколо, на статистичні в середньому, 4999 разів, щоб знайти це один фільм ви не дивилися!
C. M.

Отже, що ви дійсно хочете зробити, це не вибрати фільм навмання - Ви хочете перетасувати список фільмів для перегляду. Це як перетасовування картки шляхом вилучення картки навмання. . Коли він пішов, стек карт, який ви потягнули, знаходиться в якомусь випадковому порядку. Але якщо ви повернете карту назад у колоду, ви ризикуєте, що ви продовжуєте випадково витягувати ту саму картку знову і знову.
C. M.

Хоча ви можете скористатися ідеєю .. "Вибрати фільм у випадковому порядку, якщо його було переглянуто, пересуньте список з цього моменту, поки не знайдете непрочитаний фільм", ви також повинні ввести код, як перевірити, чи фільм переглянуто, і як з ним працювати, якщо ви досягнете кінця списку без пошуку фільму. Це речі, які вам доведеться написати повний код VBA, не використовувати просту табличну функцію Excel, тому що вам потрібно підтримувати "інформацію про стан", поки він працює, щоб знайти відповідного кандидата для перегляду.
C. M.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.