Поиск одинаковых имен и деление заданного числа на их количество

Автор Exc_fun, 16.11.2014, 09:38

« назад - далее »

Exc_fun

Имеется электронный каталог альбомов, записанных на двд. Общее количество песен 724. Задача - разбросать песни рандомно (вразброску), но со строгим интервалом между ними - чтобы один и тот же исполнитель не шел 2 раза подряд. То есть надо сделать сборник так, чтобы каждый исполнитель в новой колонке был пронумерован согласно формуле 724/Количество песен исполнителя. Во вложении сортировка у меня идет по альбомам. Но один и тот же исполнитель может попасться и в другом альбоме и его тоже надо учитывать. В моем случае, напр. у J.Dassin 42 песен, у Dalida 53. Следовательно, у J.Dassin песни должны распологаться через каждые 17, у Dalida через каждые 14 строк (из общего количества 724). Теперь в новой колонке, скажем J, нужно чтобы для J.Dassin отображалось 1,43,85,127...715, для Dalida 1,54,107,160...690. И так со всеми исполнителями. Те, у которых на двд всего 2 или 3 песни, распологаются соответственно на позициях 1,362 и 1,241. Желательно, чтобы повторяющиеся песни исполнителей в разных альбомах выделялись (колонка В) и автоматически индексировались в колонке J словом "Повтор". Замечу, что цифра 724 должна быть гибкой, то есть количество песен в дисках будет варьироваться, следовательнo, в ячейку (где 724) в будущем я буду вставлять другие цифры. Буду рад, если кому удасться осилить мою задачу. А то я справляюсь с ней лишь с помощью калькулятора, что отнимает немало времени. Если в колонке J появиться рандомная нумерация (согласно формуле 724 / количество песен исполнителя), то дальше я копирую эту колонку в текстовый файл и вставляю в программе Mp3Tag, после чего песни расставляются в новом проекте в указанном распорядке.

gling

Посмотрите файл, не совсем как написали, но распределение есть. При сортировке в столбце I "по возрастанию" исполнители с 1 песней будут в конце списка, "по убыванию" в начале. Базу данных немного уменьшил.
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

gling, распределение у вас правильное. Но это одноразовая таблица, а мне нужна универсальная, чтобы подставляя каждый раз (в определенную ячейку) цифру (количество песен в двд) сразу получать результат. Может все-таки это возможно в макросе?

gling

ЦитироватьЗадача - разбросать песни рандомно (вразброску),
Цитироватьчтобы подставляя каждый раз (в определенную ячейку) цифру (количество песен в двд) сразу получать результат.
Не понятно какой результат. Хотите получить какое то число? Или получить окончательную сортировку? Не хотите делать сортировку в ручную, запишите её макрорекордером и повесьте на кнопку. Добавили исполнителей в список-- нажали на кнопку -- все пересортировалось. И не понял почему разовая, дополняйте список сколько угодно, только диапазон в формуле измените и протяните её до конца списка. Часть формулы СЧЁТЗ($A$2:$A$1000)считает
Цитировать(количество песен в двд)
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

gling, таблицу проверил. Все хорошо. Только у вас почему-то стоит ограничение на количество песен (строк) - 128. У меня же в дисках количество песен бывает разное. В формуле стоит цифра 404. Что она означает? Я поменял ее (при проверке таблицы другого диска) на 757 (общее количество песен в нем) и вроде она корректно мне отобразила желаемую расстановку. Только вот маленькая помарка - когда один и тот же исполнитель поет в дуэте, напр.
Josh Groban & Deep Forest
Josh Groban & Joshua Bell
то его имя идет в сортировке подряд, оба - 756, хотя они должен идти в соответствии с формулой общее количество (757)/количество песен исполнителя. Напр. в альбоме 13 песен Josh Groban, но 2 из них он поет в дуете. Те, что в дуэте, не должны считaться, как новый исполнитель, а должны приниматься за Josh Groban.

gling

Формула должна быть такой =СЧЁТЕСЛИ($A$2:$A2;$A2)/СЧЁТЕСЛИ($A$2:$A$1000;$A2)*СЧЁТЗ($A$2:$A$1000) 404 в ней нет. Количество песен в ней считает функция СЧЁТЗ($A$2:$A$1000)до 1000 строки если песен больше необходимо увеличить диапазон 1000 заменить на >. Вместо чего у Вас цифра 404? Возможно какой то функции в 2003 нет.
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

gling, так или иначе, благодарю вас. Если удасться подправить и те строки, где дуэты, (чтоб один певец не пел два раза подряд), то было-бы классно. В принципе, и так хорошо. Надо протестировать на нескольких таблицах. Значит, цифра 1000 у вас означает количество строк (песен) и ее надо менять в зависимости от количества песен или это необязательно?

gling

Цитироватьцифра 1000
её необходимо сменить если в таблице более 1000 строк занято. Это последняя строка которая учитывается при расчете формулы.
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

gling, ну то есть, если на диске 600 песен, я вписываю (вместо 1000) 600, если 900, то 900, если 1300, то 1300 или можно один раз поставить для всех последующих проектов и 2000?

gling

Цитироватьдля всех последующих проектов и 2000?
Можно написать 65536 и больше не заморачиваться, это последняя ячейка листа в Excel 2003.  Если больше 65536 то - только в другой столбец или на другой лист.
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

gling, все хорошо. Tолько пара мелких вопросов. Почему в сортировке рандомная нумерация не начинается с 1? Почему, когда у меня 708 песен (строк), сортировка заскочила в одной строке на цифру 942, хотя я указал в формуле предел - 708?

Как говорил выше, пока ваша формула ставит одного исполнителя один за другим, если он в одной из 2-x песен поет в дуэте. Например, у меня в другом проекте
636. Анатолий Моксяков - Оперетта принята
637. Анатолий Моксяков и Лидия Захаренко - Исповедь
Ведь обе песни Моксякова должны расставиться рандомно, а не подряд. Этот момент в формулу можно занести?

gling

Цитироватьхотя я указал в формуле предел - 708?
Не понимаю где Вы это указываете, лучше смотреть в файле.
ЦитироватьВедь обе песни Моксякова должны расставиться рандомно, а не подряд.
Пока могу предложить только с доп. столбцом. Протестируйте.
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

gling, между вашей первой и второй формулой (столбец "Сортировка") есть небольшая разница
=СЧЁТЕСЛИ($I$2:$I2;$I2)/СЧЁТЕСЛИ($I$2:$I$1000;$I2)*СЧЁТЗ($I$2:$I$1000)
=СЧЁТЕСЛИ($A$2:A2;A2)/СЧЁТЕСЛИ($A$2:$A$1000;A2)*СЧЁТЗ($A$2:$A$1000)
Что означает дополнение во второй?
Новая таблица что-то мне не понравилась. Запутался (лишний столбец все таки, мозолит глаза). Желательно, чтобы всё получалось сразу, одной формулой и в одном столбце. Так можно сделать?

gling

ЦитироватьЧто означает дополнение во второй?
В одной (2) формуле весь расчет ссылается на столбец А в котором полное название исполнителей (в том числе и дуэт), в другой (1) ссылается на столбец I, в котором формула отделяет первого исполнителя дуэта. Сами посмотрите разницу между ячейками A25 и I25. Формулу немного изменил в столбце I и скрыл группировкой, чтобы исключить недостаток
Цитировать(лишний столбец все таки, мозолит глаза)
Открыть группировку можно нажав + над столбцом Н.
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Exc_fun

Я уже запутался. Чем меньше формул и дополнительных столбцов, тем лучше и удобнее для меня. Достаточно ли оставить один столбец с универсальной формулой, чтобы она принимала скажем Пугачева и Пугачева и Киркоров за одно лицо? У вас в дополнительном столбце I съедены последние буквы исполнителей, a в J стоит стандартная формула, не учитывающая дуэты. Теперь как мне уловить нововведение? Если, скажем, у певца Serge Lama
2 песни, то сортировка мне показывает номера 64 и 128. Если к одной из этих песен я приписываю еще одно имя, чтобы получился дуэт - Serge Lama & Dalida, то сортировка снова мне показывает номера 64 и 128. То есть никакой разницы. А почему не показывает 128?