Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Станиславский от 05.01.2016, 14:13

Название: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 05.01.2016, 14:13
Доброго дня, форумчане!
Я как обычно, когда захожу, то с проблемой))
Всех с Новым Годом, побольше интересных задач и их решений :)

Вот собственно задача:
Необходимо создать массив данных, чтобы при указанных двух процентных значениях, некоторое число разбивалось на 1 и 0 в пределах указанного диапазона, который равен некоторому числу.
Пример во вложении. У нас есть 200 машин и мы знаем, что 71% легковые, а 29% соответственно грузовые. Нам необходимо рандомно в строке "Машины" разбить эти 200 штук на 1 и 0 (или "лекг" и "груз"), чтобы в итоге указанные проценты совпадали. В принципе это можно сделать методом тыка вручную, но фишка в том, чтобы менять проценты и распределение 1 и 0 менялось, так как массив может быть и больше.
Вопрос не по теме удален
За помощь буду благодарен за любую!
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 05.01.2016, 16:00
Off:
ЦитироватьЯ как обычно, когда захожу, то с проблемой))
Всех с Новым Годом
Если Вы бухгалтер, не успевший с годовым отчетом, то это ействительно огромная проблема :)

Второй вопрос удален. Для него создайте отдельную тему.

По теме. Со столбца G по GI - так и нужно?
Сообразил: ряд от 1 до 200
Название: Re: Создание интересного массива данных
Отправлено: Станиславский от 05.01.2016, 16:09
Второй вопрос не совсем второй, он как бы сюда относился...это мне предложили вариант работы этой формулы для этого массива, но хорошо, сейчас создам новую тему :)
По теме - со столбца G по GI я просто "свернул", чтобы не загромождать всем массивом :)
Название: Re: Создание массива 1,0 со лучайным расположением
Отправлено: vikttur от 05.01.2016, 20:23
=ЕСЛИ(СЧЁТЕСЛИ($B$3:B3;1)>=$GX$3*$GU$3;0;ЕСЛИ(СЧЁТЕСЛИ($B$3:B3;0)>=$GY$3*$GU$3;1;ЦЕЛОЕ(СЛЧИС()/0,5)))
Знак > на случай, когда одно значение занимает >1% диапазона
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 10:23
Класс! Супер! Спасибо!
Всё в принципе несложно, но от этого и интересно :)
Ещё раз спасибо!
P.S. и маленький вопросик: если у меня три, четыре или больше критериев, то соответственно столько раз я повторяю вторую часть формулы и вместо 1 соответственно 2, 3 и т.д.?
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 10:37
Попробуйте :)
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 11:29
да уж...на 6 критериев не хочет(( видать дело в случайном числе в конце...
если есть возможность, подскажите что да куда :)
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 11:43
СЛЧИС генерирует действительные значения от 0 до 1 - 0,52365522, 1, 0,86235454...
ЦЕЛОЕ(СЛЧИС()/0,5) - или 0, или 1. Всего два возможных варианта.
Вы хотите 6 значений? Сделайте 6 возможных вариантов.
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 12:00
с ЦЕЛОЕ(СЛЧИС()/0,5) разобрался т.е. формула =ЕСЛИ(СЧЁТЕСЛИ($C$5:C5;6)>=$HJ$5*$GV$5;5;ЕСЛИ(СЧЁТЕСЛИ($C$5:C5;5)>=$HI$5*$GV$5;4;ЕСЛИ(СЧЁТЕСЛИ($C$5:C5;4)>=$HH$5*$GV$5;3;ЕСЛИ(СЧЁТЕСЛИ($C$5:C5;3)>=$HG$5*$GV$5;2;ЕСЛИ(СЧЁТЕСЛИ($C$5:C5;2)>=$HF$5*$GV$5;1;ЕСЛИ(СЧЁТЕСЛИ($C$5:C5;1)>=$HE$5*$GV$5;0;ЦЕЛОЕ(СЛЧИС()/0,1)))))))
считать правильно не будет как её ни крути? Сейчас она даёт два верных варианта..ну оно и понятно теперь почему.
Понимаю, что прозвучит смешно, но что сделать для шести вариантов?  ::)
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 12:12
ЦЕЛОЕ(СЛЧИС()/0,5) - сделайте хоть 10 вариантов. Я Вам показал, как. Включайте голову.
Можете вместо этого фрагмента приметь СЛУЧМЕЖДУ

Из мультика "Вовочка в Тридевятом государстве":
- Вы за меня и пальцы загибать будете?
- АГА!!!
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 12:18
про Вовочку намёк понятен ((
но, честно, про шесть вариантов не очень...т.е. у меня итоговое число 200 разбивается на 6, по той же схеме как и на два. Если Вы говорите, что в ЦЕЛОЕ(СЛЧИС()/0,5) возможны только два варианта, то как же их сделать шесть, если мне необходимо, чтобы в массиве шли цифры 0, 1, 2, 3, 4 и 5?
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 12:30
ЦитироватьВы говорите, что в ЦЕЛОЕ(СЛЧИС()/0,5) возможны только два варианта
Конечно, в такой записи только два. А если поменять делитель?
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 12:34
хм...я ж вроде сбросил формулу, которая у меня получилась и там делитель поменян на 0,1, но правильных значений по процентам выдаёт всё равно только два - первое и последнее. С делителем то я сразу разобрался, что если его менять то формула начинает работать...я не могу найти косяк, из-за которого формула не разбивает правильно по нужным процентам.
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 12:48
Цитироватьхм...я ж вроде сбросил формулу... и там делитель поменян на 0,1
Извините, не видел - в сообщении отображается только начало формулы.
Покажите пример с множеством диапазонов. На примере проверять легче.
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 13:03
пример приложил...там только немного мудрил и сейчас уже вообще ничего не сходится ((
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 13:04
Да, не пойдет... Получается много ветвлений условий.

Кстати, почему по столбцам, не по строкам? Ведь вертикально удобнее!
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: Станиславский от 06.01.2016, 13:13
там дальше будет ещё 10-15 критериев, на которые будут разбиваться не только общие суммы, но и уже разбитые суммы ранее, а потом каждый столбец будет копироваться и переноситься в вордовскую форму для отчёта, а потом...куча заморочек :) решил, что так удобнее будет, области закрепить и по полотну двигаться, но то уже в дальнейшем, сейчас это всё надо, чтоб заработало :(

Можно и макросом кстати, но вот тут мои познания VBA оставляют явно желать лучшего :(
Название: Re: Создание массива 1,0 со случайным расположением
Отправлено: vikttur от 06.01.2016, 13:14
Ждите макрос.