Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сделать покерный калькулятор - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena 
Мир MS Excel » Работа и общение » Работа / Фриланс » Сделать покерный калькулятор
Сделать покерный калькулятор
Mexo Дата: Пятница, 01.12.2017, 22:54 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Здравствуйте! Ищу помощь в создании UDF для калькулятора (вероятно рекурсивной) которая подставляет возможные комбинации со значениями(размещая до 9ти значений), чтобы использовать ее в формулах. Есть пример калькулятора(не доделанного), в котором вычисления сделаны в дополнительном массиве на листе формулами без UDF. Голубые ячейки - ячейки для ввода данных. Справа от калькулятора массив, в нем есть ячейки с длинными формулами, слагаемые выражения в которых представляют собой комбинацию. Нужно эти слагаемые заменить функцией. И вместо массива на листе сделать его в vba. И нужно чтобы скорость вычисления была не очень медленной. Простите если не понятно объяснил, но как смог, по ходу появления вопросов постараюсь объяснять более конкретней.
ПС: Пример сюда не влез
 
Ответить
СообщениеЗдравствуйте! Ищу помощь в создании UDF для калькулятора (вероятно рекурсивной) которая подставляет возможные комбинации со значениями(размещая до 9ти значений), чтобы использовать ее в формулах. Есть пример калькулятора(не доделанного), в котором вычисления сделаны в дополнительном массиве на листе формулами без UDF. Голубые ячейки - ячейки для ввода данных. Справа от калькулятора массив, в нем есть ячейки с длинными формулами, слагаемые выражения в которых представляют собой комбинацию. Нужно эти слагаемые заменить функцией. И вместо массива на листе сделать его в vba. И нужно чтобы скорость вычисления была не очень медленной. Простите если не понятно объяснил, но как смог, по ходу появления вопросов постараюсь объяснять более конкретней.
ПС: Пример сюда не влез

Автор - Mexo
Дата добавления - 01.12.2017 в 22:54
Mexo Дата: Воскресенье, 03.12.2017, 00:04 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Приложил таблицу, где вычисляется вероятность занять определенное место в турнире игроками, исходя из количества фишек у них. Формула для вероятности занять первое или последнее место простая, но вот формулы для вероятности занять другие места уже получаются большими. Чем выше место,тем больше "комбинаций выражений" в формуле.
ПС: Мне достаточно будет хотя бы только эту UDF, остальное смогу доделать самостоятельно.
К сообщению приложен файл: __.xlsm(13Kb)
 
Ответить
СообщениеПриложил таблицу, где вычисляется вероятность занять определенное место в турнире игроками, исходя из количества фишек у них. Формула для вероятности занять первое или последнее место простая, но вот формулы для вероятности занять другие места уже получаются большими. Чем выше место,тем больше "комбинаций выражений" в формуле.
ПС: Мне достаточно будет хотя бы только эту UDF, остальное смогу доделать самостоятельно.

Автор - Mexo
Дата добавления - 03.12.2017 в 00:04
Mexo Дата: Воскресенье, 03.12.2017, 00:41 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Объясню откуда комбинации в формулах.
Имеется 10 игроков, обозначенных буквами латинского алфавита.
Когда считаю вероятность занять 2е место игроком A, складываю все вероятности когда игрок A - на втором месте, а на 1м месте каждый из оставшихся девяти игроков: игрок А на 2-м месте = BA + CA + DA+ ... т.е. должно получиться 9 комбинаций.
Когда считаю вероятность занять 3е место игроком A, складываю все вероятности когда игрок A должен быть на третьем месте, на 1е место подставляю любого из оставшихся 9ти игроков, а на 2е место - любого из оставшихся 8ми игроков: игрок А на 3-м месте = BCA + BDA + BEA+ ... Должно получиться 72 комбинации(9*8=72).
 
Ответить
СообщениеОбъясню откуда комбинации в формулах.
Имеется 10 игроков, обозначенных буквами латинского алфавита.
Когда считаю вероятность занять 2е место игроком A, складываю все вероятности когда игрок A - на втором месте, а на 1м месте каждый из оставшихся девяти игроков: игрок А на 2-м месте = BA + CA + DA+ ... т.е. должно получиться 9 комбинаций.
Когда считаю вероятность занять 3е место игроком A, складываю все вероятности когда игрок A должен быть на третьем месте, на 1е место подставляю любого из оставшихся 9ти игроков, а на 2е место - любого из оставшихся 8ми игроков: игрок А на 3-м месте = BCA + BDA + BEA+ ... Должно получиться 72 комбинации(9*8=72).

Автор - Mexo
Дата добавления - 03.12.2017 в 00:41
InExSu Дата: Воскресенье, 03.12.2017, 00:42 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 260
Репутация: 29 ±
Замечаний: 80% ±

Excel 2010
Привет!
Написал в личку.
Заказ свободен. Мне, пока, не по силам.


Сообщение отредактировал InExSu - Воскресенье, 03.12.2017, 17:25
 
Ответить
СообщениеПривет!
Написал в личку.
Заказ свободен. Мне, пока, не по силам.

Автор - InExSu
Дата добавления - 03.12.2017 в 00:42
Mexo Дата: Среда, 06.12.2017, 01:31 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Может быть можно решить задачу встроенными средствами не создавая пользовательскую функцию..?
К примеру функцию назову "COMB", в параметрах этой функции будут ссылки на ячейки с числовыми значениями.
Возьму длинную формулу из таблицы в файле примере:

И вместо этой длинной формулы запишу примерно такое:
[vba]
Код
=СУММ(
СУММ(F6*(COMB(D7:D14)/(D4-D6))*(D5/D4-D6-COMB(D7:D14))));
СУММ(F7*(COMB(D7;D8:D14)/(D4-D6))*(D5/D4-D6-COMB(D7;D8:D14))));
СУММ(F8*(COMB(D6:D7;D9:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D7;D9:D14))));
СУММ(F9*(COMB(D6:D8;D10:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D8;D10:D14))));
СУММ(F10*(COMB(D6:D9;D11:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D9;D11:D14))));
СУММ(F11*(COMB(D6:D10;D12:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D10;D12:D14))));
СУММ(F12*(COMB(D6:D11;D13:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D11;D13:D14))));
СУММ(F13*(COMB(D6:D12;D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D12;D14))));
СУММ(F14*(COMB(D6:D13)/(D4-D6))*(D5/D4-D6-COMB(D6:D13)))))
[/vba]
 
Ответить
СообщениеМожет быть можно решить задачу встроенными средствами не создавая пользовательскую функцию..?
К примеру функцию назову "COMB", в параметрах этой функции будут ссылки на ячейки с числовыми значениями.
Возьму длинную формулу из таблицы в файле примере:

И вместо этой длинной формулы запишу примерно такое:
[vba]
Код
=СУММ(
СУММ(F6*(COMB(D7:D14)/(D4-D6))*(D5/D4-D6-COMB(D7:D14))));
СУММ(F7*(COMB(D7;D8:D14)/(D4-D6))*(D5/D4-D6-COMB(D7;D8:D14))));
СУММ(F8*(COMB(D6:D7;D9:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D7;D9:D14))));
СУММ(F9*(COMB(D6:D8;D10:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D8;D10:D14))));
СУММ(F10*(COMB(D6:D9;D11:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D9;D11:D14))));
СУММ(F11*(COMB(D6:D10;D12:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D10;D12:D14))));
СУММ(F12*(COMB(D6:D11;D13:D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D11;D13:D14))));
СУММ(F13*(COMB(D6:D12;D14)/(D4-D6))*(D5/D4-D6-COMB(D6:D12;D14))));
СУММ(F14*(COMB(D6:D13)/(D4-D6))*(D5/D4-D6-COMB(D6:D13)))))
[/vba]

Автор - Mexo
Дата добавления - 06.12.2017 в 01:31
sboy Дата: Среда, 06.12.2017, 13:24 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1163
Репутация: 293 ±
Замечаний: 0% ±

Excel 2010
Вашу формулу можно переписать так

Это похоже на перемножение матриц, но я еще не научился пользоваться МУМНОЖ() правильно
[p.s.]На заказ не претендую, просто мысли вслух)


Сообщение отредактировал sboy - Среда, 06.12.2017, 13:25
 
Ответить
СообщениеВашу формулу можно переписать так

Это похоже на перемножение матриц, но я еще не научился пользоваться МУМНОЖ() правильно
[p.s.]На заказ не претендую, просто мысли вслух)

Автор - sboy
Дата добавления - 06.12.2017 в 13:24
Mexo Дата: Среда, 06.12.2017, 17:06 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
sboy, Спасибо, вроде считает правильно, попробую применить этот метод на всей таблице, и напишу результат.
 
Ответить
Сообщениеsboy, Спасибо, вроде считает правильно, попробую применить этот метод на всей таблице, и напишу результат.

Автор - Mexo
Дата добавления - 06.12.2017 в 17:06
Mexo Дата: Четверг, 07.12.2017, 06:04 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Для 4го столбца уже не получается.
Пример первой строки:
[vba]
Код
=F6*(D7/(D4-D6))*(D8/(D4-D6-D7))*(D5/(D4-D6-D7-D8))+...
[/vba]
записал так:
[vba]
Код
СУММПРОИЗВ(F6*(D6:D14/(D4-D6));D6:D14/(D4-D6-D6:D14);
D5/(D4-D6-D6:D14-D6:D14);--(СТРОКА(D6:D14)<>СТРОКА(F6)));...
[/vba]
Если всю формулу:

Получаю не верный результат, потому что считает варианты которых не должно быть, например такой:
[vba]
Код
=F6*(D7/(D4-D6))*(D7/(D4-D6-D7))*(D5/(D4-D6-D7-D8))+...
[/vba]
Не должно быть, потому что делимые в каждом множителе(D7,D7,D5) должны отличаться номером строки от множимого(F6) и др. от друга.


Сообщение отредактировал Mexo - Четверг, 07.12.2017, 06:31
 
Ответить
СообщениеДля 4го столбца уже не получается.
Пример первой строки:
[vba]
Код
=F6*(D7/(D4-D6))*(D8/(D4-D6-D7))*(D5/(D4-D6-D7-D8))+...
[/vba]
записал так:
[vba]
Код
СУММПРОИЗВ(F6*(D6:D14/(D4-D6));D6:D14/(D4-D6-D6:D14);
D5/(D4-D6-D6:D14-D6:D14);--(СТРОКА(D6:D14)<>СТРОКА(F6)));...
[/vba]
Если всю формулу:

Получаю не верный результат, потому что считает варианты которых не должно быть, например такой:
[vba]
Код
=F6*(D7/(D4-D6))*(D7/(D4-D6-D7))*(D5/(D4-D6-D7-D8))+...
[/vba]
Не должно быть, потому что делимые в каждом множителе(D7,D7,D5) должны отличаться номером строки от множимого(F6) и др. от друга.

Автор - Mexo
Дата добавления - 07.12.2017 в 06:04
Мир MS Excel » Работа и общение » Работа / Фриланс » Сделать покерный калькулятор
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!