Добавить пару формул в документ Excel.

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Kreol
Сообщения: 13
Зарегистрирован: 08 мар 2011, 22:03

Всем привет.
Собственно Сабж. Сам документ прилагаю. Незнаю, как тут вообще принято, но написавшего формулу или макрос отблагодарю (wmz кошель в личку)
Необходимо следующее :
Значения в колонках final calls и final puts считаются из колонок put и call , которые в свою очередь из Strike. Так вот, необходимо в колонках final strikes calls и final strikes puts соответственно проставить вместо x,x1,x2....xn уровни из подколонок level колонок final calls и final puts соотвественно. Например в ячейке 19\3 будет стоять 1,379 а в ячейке 29\3 будет стоять 1,29995 и так далее вниз (т.е короче говоря скопипастить столбцы level). А вместо y1,y2,y3....yn проставить значения Strike/100, которые учавствовали в рассчёте level для calls и puts соответственно. Оставив ячейки справа пустыми, т.к в них потом я буду вписывать числа для каждого Strike. Я поставил yn, т.к неизвестно, сколько в рассчёте будет учавствовать Strike. Может один или два, а может несколько. Таким образом диапазоны [19/n;+беск) и [30/n;+беск.) будут сужаться и расширяться в зависимости от кол-ва Strike.
Итак, например дипазон [19/3;+беск) (для calls) будет выглядеть приблизительно так :
|1,379| 1300(пример!)| |1350(пример!)| | и т.д
Диапазон [30/3;+беск.) (для puts) :
|1,29995|1200(пример!)| |1450(пример!)| |

Объяснил как смог. Если что-то непонятно - пишите обязательно.
В качестве результата мне впринципе всё равно, что будет - массив формул или макрос....
Формулы, по которым ведутся рассчёты final calls и final puts прилагаю в архиве.

p.s Такой вопрос. У меня подобных листов несколько и в VBA Project мне приходится вставлять один и тот же макрос для каждого листа и менять лишь одно значение в нём : Const sWkSh$ = имени листа.
Возможно ли как-то сделать, чтобы я один раз вставил макрос и он считал для всех листов сразу... а то с каждым разом рассчёт ведётся всё дольше и дольше ...
В макросе стоят знаки вопроса из-за дефолтной раскладке клавиатуры EN. Текст макроса прилагаю.

p.p.s Возможно ли ВСЕ рассчёты в этом документе написать в одном макросе ?

Документ : http://fayloobmennik.net/439914 (приложить не получилось)
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Все-таки не совсем понятно. В файле заполните несколько значений вручную, как должно быть.
И, кстати, столбцы H:L нужны ли? Может, формулы в этих столбцах просчитывать в макросе?
Kreol
Сообщения: 13
Зарегистрирован: 08 мар 2011, 22:03

nilem писал(а):Все-таки не совсем понятно. В файле заполните несколько значений вручную, как должно быть.
И, кстати, столбцы H:L нужны ли? Может, формулы в этих столбцах просчитывать в макросе?


Нет-нет .... эти ячейки просто оставьте пустыми, а потом в них Я буду вписывать числа ...
Про столбцы - напишите числами, у меня буквы не отображаются ... в любом случае те столбцы, которые ЕСТЬ и они заполнены - должны остаться.
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Вот сюдаположил.
Значения пишутся в ячейки, начиная с N3, P3, S3 и AAA3. Проверяйте.
Непонятно, что делает ваш макрос - словами напишите.
Чтобы буквы отображались: круглая кнопка Excel - Параметры - Формулы - снять галочку "Стиль ссылок R1C1"
Kreol
Сообщения: 13
Зарегистрирован: 08 мар 2011, 22:03

nilem писал(а):Вот сюдаположил.
Значения пишутся в ячейки, начиная с N3, P3, S3 и AAA3. Проверяйте.
Непонятно, что делает ваш макрос - словами напишите.
Чтобы буквы отображались: круглая кнопка Excel - Параметры - Формулы - снять галочку "Стиль ссылок R1C1"
1)final calls и final puts нужно оставить нетронутыми. А вы их, как я понял, упорядочили по size.
2)Непойму, откуда вы взяли уровни для столбца S. Согласно моему примеру - первый уровень 1,379, второй будет - 1,3802, третий - 1,381 и т.д - это для стобца S
3)Непойму, откуда вы взяли уровни для столбца AAA Согласно примеру - первым будет 1,29995, второй - 1,3099, третий - 1.30995 и т.д
4)В колонке strike для final strikes calls и final strikes puts повторяющиеся значения должны писаться один раз. Моя ошибка - забыл упомянуть об этом. Прошу прощения.
5)Колонка final strikes calls не должна "залезать" на "final strikes puts". Я мог бы предположить, что если убрать повторения из final strikes calls, то она "залезать" не будет, но к сожалению не могу быть в этом уверенным.
6)Можно ли "сдвинуть" "вторую" колонку final strikes puts (ААА стобец) прям в притык к "final strikes calls", а первую (AC стобец) - удалить, чтоб не мешалась.

Немного про сами рассчёты, которые УЖЕ ЕСТЬ в документе :
Макрос расставляет время в 24 часовом варианте в столбце 2 + удаляет некоторые буквенные значения и одну колонку исходных данных (1-7столбец) Формулы рассчитывают 14-17 столбец исходя из значений слева (8-12 столбец). Можете глянуть формулы в приложении или нажать на любую ячейку. Значения слева в свою очередь рассчитываются по лог.функциям исходя из данных 1-7 столбец, которые являются изначальными.
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

1. final calls и final puts считаются в макросе (там у вас формулы слишком тяжелые) и сортируются по убыванию сначала по size, потом по level.
2. Уровни для столбца S - это те же самые final calls level, только без сртировки (не знаю, как надо, поэтому есть вариант с сортировкой и без нее).
3. Уровни для столбца AAA - это опять final puts level без сортировки.
4. Повторы можно убрать - не проблема.
5.-6. Это тоже можно сделать.
В остальном нормально? Формулы в H:L нужны или их в макрос?
Может лучше дадите исходные данные, как есть, и таблицу с нужным результатом? Похоже, можно проще все это сделать.
Kreol
Сообщения: 13
Зарегистрирован: 08 мар 2011, 22:03

nilem писал(а):1. final calls и final puts считаются в макросе (там у вас формулы слишком тяжелые) и сортируются по убыванию сначала по size, потом по level.
2. Уровни для столбца S - это те же самые final calls level, только без сртировки (не знаю, как надо, поэтому есть вариант с сортировкой и без нее).
3. Уровни для столбца AAA - это опять final puts level без сортировки.
4. Повторы можно убрать - не проблема.
5.-6. Это тоже можно сделать.
В остальном нормально? Формулы в H:L нужны или их в макрос?
Может лучше дадите исходные данные, как есть, и таблицу с нужным результатом? Похоже, можно проще все это сделать.

1) Оставьте уровни как они были - от меньшего к большему по level.
2 и 3) - отсортируйте также как и 1) - от меньшего к большему (или просто скопируйте 1))
4)ок
5-6)ок
В остальном вроде все ... нужно оценить общую картинку, но так впринципе остальное ок. Формулы особо не нужны, можно в макрос.
Могу вам дать ПОХОЖИЕ данные - структура будет такая же, только цифры другие. Прикладываю исходник данных и конечный результат.
http://webfile.ru/5179766
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

В final strikes calls убираем повторы по strike. А какие level оставляем - первый попавшийся?
Kreol
Сообщения: 13
Зарегистрирован: 08 мар 2011, 22:03

nilem писал(а):В final strikes calls убираем повторы по strike. А какие level оставляем - первый попавшийся?

А мы level убираем разве ? Уточню на всякий пожарный - убираем повторы, значит из 10ти (например) повторов оставляем один. Также повторы убираем аналогично в final strikes puts.
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Все-таки с повторами непонятно. Смотрим файл. На Лист1 и Лист2 сначала жмем зеленую стрелку, потом красную или синюю. Красная заполняет с повторами, а синяя без (как понял). Если не так - выделите цветом на листе в нескольких строках ячейки, которые нужно убрать.
Файл здесь.
Пример взял из файла primer final, можно проверить результаты макроса и формул.
Ответить