Страницы: 1
RSS
ВПР то находит нужное время, то не находит.
 
Создаю таблицу, которая эмулирует игру, имеется в игре производство ресурсов, так же есть бусты, которые временно увеличивают производство на 10%, 20% или 30%.
Именно с реализаций этих бустов у меня проблема.

В Листе "Расчеты" проводятся все вычисления, на листе калькулятор, вносятся данные и выдаются необходимые значения. Все пояснения по калькулятору описаны в примечаниях.
Все действия в листе "Расчеты" посекундны! сверяйтесь с таблицей "Кальулятора", чтоб найти нужное время в котором использовался буст.

В листе расчеты, для реализации бустов, я создал 3 столбца, выделил их желтым,
- Столбец, "Завершение буста снабжения", отображает время, в которое их действие по увеличению производства ресурсов, должны прекратиться. Суммирую время активации буста и время действия самого буста.
- В столбце, "Бонус Буста снабжения" - отображается значение, на которое увеличивается производство буста, "0,1", "0,2" или "0,3" соответственно. Эти значения появляются при использовании буста, и копируются дальше в низ по столбцу, они перемножаются с основным производством.
- Да бы прекратить действие буста после его завершения, я ввел третью таблицу "Вычитание буста снабжение", относительно каждого момента времени, он ищет то же самое время в графе "Завершение буста снабжения", как только он находит время завершения какого то буста, то берет на этой же строчке из столбца "Бонус Буста снабжения" стоящее значение, после это значение вычитает "Бонус снабжения буста", тем самым прекращая действие бонуса в момент завершения действия буста
Реализовано это через ВПР ( текущее время (столбец 14); Завершение буста снабжения : Бонус буста снабжения; Бонус буста снабжения; Ложь)
Дело в том, что ВПР не всегда находит время, через раз

На листе Калькулятор, наглядно все видно, в момент времени 0:05:00 - Используется "Синий буст", время завершения его в 06:00.
Видно что на момент использования буста в 5:00, производство ресурсов увеличилось и стало 697,
Ниже отображается время 0:07:00 - видно, что производство ресурсов стало 634, значит действие буста успешно прекратилось, ВПР нашел время 06:00
Попробуйте изменить время активации буста на 0:05:01, просто прибавив одну секунду, и сразу увидите, что в 0:07:00, производство остается равно 697, то есть ВПР не находит время завершения буста 06:01, и производство остается повышенным постоянно!
Почему так происходит? не могу понять, находит время через раз...

В листе "Здания" находятся все используемые данные.

Прошу прощения, но файл больше 100кб, я сократил но все ровно,
В оригинале он на 1 час, а этот чуть больше чем на 7 минут.

Спасибо за помощь!
Изменено: Altinbex - 09.04.2018 15:09:09
 
Прочитайте на этом сайте теорию, как ексель работает с датами и временем, и надеюсь тут же поймете в чем ваша ошибка.
Пользуйтесь округлением.
Если автоматизировать бардак, то получится автоматизированный бардак.
 
В расчетах используются, избавлялся от долей секунд
Пример:
Код
=ЕСЛИОШИБКА(ОКРУГЛ((ВПР([@Столбец2];БустБ;4;ЛОЖЬ)+[@Столбец14])*86400;0)/86400;"")
Изменено: Altinbex - 09.04.2018 14:39:17
 
Цитата
Altinbex написал:
избавлялся от долей секунд
ВПР то ищет еще до округления. У вас в таблице ищет округленные значения?
Если автоматизировать бардак, то получится автоматизированный бардак.
 
Помогающим куда-то идти, качать файл, снимать защиту...
Цитата
Altinbex написал:  файл больше 100кб,
Для того, чтобы отобразить проблему, достаточно 5-10 ячеек с данными, где "то находит, то не находит"
 
Цитата
wowick написал: У вас в таблице ищет округленные значения?
Благодарю! Округлил абсолютно все имеющиеся времена в документе, помогло

!
Цитата
vikttur написал:  достаточно 5-10 ячеек с данными, где "то находит, то не находит"
Прошу прощение, в следующий раз постараюсь подготовить документ как требуется!
 
Цитата
Altinbex написал:
Округлил абсолютно все имеющиеся времена в документе, помогло!
Либо, если время у вас только нарастает, то можно использовать ВПР() с последним параметром "Истина".
Если автоматизировать бардак, то получится автоматизированный бардак.
Страницы: 1
Наверх