Страницы: 1
RSS
Возврат значения в зависимости от интервала времени и дополнительных переменных, Ищу простой и менее трудоемкий подход для возврата нужного значения из базы
 
Добрый день,

Пересмотрел и искал много по своей теме, но нужных вариантов не нашел.

Есть задача вытащить из базы медийное значение, которое зависит от название телеканала, типа дня и интервал времени с шагом в 30 минут.
Потратил много времени, но ничего не придумал лучше чем функция сцепить.
Самый большой затык это интервал времени. Для того чтобы СЦЕПИТЬ работал пришлось упростить этот интервал через функцию Час до простого значения, но это для меня очень большая погрешность, т.к. в базе время указано с точностью до секунды.

Есть ли варианты искать данные по базе с учетом нескольких переменных и + учитывать в каком 30 минутном отрезке дня находится нужно мне значение.

Пример во вложении. В правой части табличка с базой, в левой части таблица куда надо подтянуть результат.

Заранее очень благодарен за помощь. По срокам уже горю :)
 
Вы не ту таблицу приложили. Нужно "вот так сейчас у меня есть" - "Вот так хочу, чтобы было". И в таблице "хочу" несколько строк вручную хорошо бы заполнить с пояснениями, почему именно так. Вот тогда все понятно будет (ну, обычно так )))
Изменено: _Boroda_ - 30.06.2022 09:33:41
Скажи мне, кудесник, любимец ба’гов...
 
Цитата
написал:
Вы не ту таблицу приложили. Нужно "вот так сейчас у меня есть" - "Вот так хочу, чтобы было". И в таблице "хочу" несколько строк вручную хорошо бы заполнить с пояснениями, почему именно так. Вот тогда все понятно будет (ну, обычно так )))
В своем примере я округляю 30 минутные интервалы до цело часа, а это потеря точности моих данных. Как я хочу это левая табличка, просто шаг нужен меньше чем час.

Я "хочу" вернуть значение в 30 минутном интервале времени или 15 минутном (это зависит от настроек выгрузки из базы).
Если нужный мне рекламный ролик вышел на телеканале Пятница в 17:12 в рабочий день, то мне требуется значение из интервала с 17:00 до 17:30, а не из интервала 17:00 - 17:59.
Этого интервала нет в пример, но суть не меняется от этого.

т.е имея факт выхода в 17:12, мне надо подтянуть данные из интервала 17:00-17:30.
Я надеюсь что смог сформулировать свою мысль :)  
 
Цитата
_Boroda_ написал:
Нужно "вот так сейчас у меня есть" - "Вот так хочу, чтобы было".
Не словами. В файле.

Цитата
Дмитрий Кудрявцев написал:
имея факт выхода в 17:12, мне надо подтянуть
Где имея? В файле его нет

Цитата
Дмитрий Кудрявцев написал:
Я надеюсь что смог сформулировать свою мысль
Не нужно мысль, нужно файл
Изменено: _Boroda_ - 30.06.2022 10:04:45
Скажи мне, кудесник, любимец ба’гов...
 
Дмитрий Кудрявцев,
если свои мысли вы будете формулировать с привязкой к именам ячеек в приложенном вами файле - эти мысли станут понятными местной публике, а не только вам одному
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
Цитата
_Boroda_ написал:
Нужно "вот так сейчас у меня есть" - "Вот так хочу, чтобы было".
Не словами. В файле.

Цитата
Дмитрий Кудрявцев написал:
имея факт выхода в 17:12, мне надо подтянуть
Где имея? В файле его нет

Цитата
Дмитрий Кудрявцев написал:
Я надеюсь что смог сформулировать свою мысль
Не нужно мысль, нужно файл
:)
Постарался отразить в файле то  о чем вы просите.
Спасибо
 
Цитата
написал:
Дмитрий Кудрявцев,
если свои мысли вы будете формулировать с привязкой к именам ячеек в приложенном вами файле - эти мысли станут понятными местной публике, а не только вам одному
Да, я видимо слишком в своей проблеме застрял и не осознаю как это воспринимается людьми вне данной проблемы.
Спасибо
 
Цитата
Дмитрий Кудрявцев написал:
Постарался отразить в файле то  о чем вы просите
вот это класс!
и уже не вы просите решить задача, а у вас просят рассказать "а что же за задача такая у вас?"))
Изменено: Ігор Гончаренко - 30.06.2022 10:51:41
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Так?
Код
=СУММПРОИЗВ((I3:I26=B8)*(J3:J26=C8)*(--ЛЕВБ(K3:K26;8)<=D8)*(--ПРАВБ(K3:K26;8)>=D8)*M3:M26)
Скажи мне, кудесник, любимец ба’гов...
 
Цитата
написал:
Так?
Код
    [URL=#]?[/URL]       1      =СУММПРОИЗВ((I3:I26=B8)*(J3:J26=C8)*(--ЛЕВБ(K3:K26;8)<=D8)*(--ПРАВБ(K3:K26;8)>=D8)*M3:M26)   
 
Да!
Работает, но ничего не понятно.

Мне надо будет эту формулу перенести в другой файл, подскажите пожалуйста:

- ($I$3:$I$28=B4) - в чем суть этой формулы
-  и что такое --ЛЕВБ и --ПРАВБ не нашел описания

Буду очень вам признателен.

А за нахождение ответа от всего сердца Благодарю.
Успею теперь все сделать к сроку.  
 
ЛЕВБ https://support.microsoft.com/ru-ru/office/%D0%BB%D0%B5%D0%B2%D1%81%D0%B8%D0%BC%D0%B2-%D0%BB%D0%B5%D0%B2%D0%B1-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%BB%D0%B5%D0%B2%D1%81%D0%B8%D0%BC%D0%B2-%D0%BB%D0%B5%D0%B2%D0%B1-9203d2d2-7960-479b-84c6-1ea52b99640c

Цитата
Дмитрий Кудрявцев написал:
$I$3:$I$28=B4) - в чем суть этой формулы
сравниваем диапазон I со значением в В. Получаем массив из ИСТИНА или ЛОЖЬ. Аналогично с остальными скобками. Перемножаем полученные массивы. Получаем единичку только там, где все условия выполняются. Умножаем все на столбец М, получаем нужное число, но она в массиве вместе с ноликами. СУММПРОИЗВ все это складывает, получаем только нужное число

-- это бинарное отрицание
Скажи мне, кудесник, любимец ба’гов...
 
Цитата
написал:
ЛЕВБ  https://support.microsoft.com/ru-ru/office/%D0%BB%D0%B5%D0%B2%D1%81%D0%B8%D0%BC%D0%B2-%D0%BB%D0%B5%D0%B2%D0%B1-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%BB%D0%B5%D0%B2%D1%81%D0%B8%D0%BC%D0%B2-%D0%BB%D0%B5%D0%B2%D0%B1-9203d2d2-7960-479b-84c6-1ea52b99640c

Цитата
Дмитрий Кудрявцев написал:
$I$3:$I$28=B4) - в чем суть этой формулы
сравниваем диапазон I со значением в В. Получаем массив из ИСТИНА или ЛОЖЬ. Аналогично с остальными скобками. Перемножаем полученные массивы. Получаем единичку только там, где все условия выполняются. Умножаем все на столбец М, получаем нужное число, но она в массиве вместе с ноликами. СУММПРОИЗВ все это складывает, получаем только нужное число

-- это бинарное отрицание

Логику понял.
Еще раз огромное спасибо!
Пошел реализовывать.
Д
 
Код
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/(Данные[Телеканал]=B9)/(Данные[Буд/раб]=C9)/((Данные[C]<=D9)*(Данные[ПО]>=D9));Данные[Affinity]);"нет данных")


У меня подлиннее формула...
 
Цитата
написал:
Код
    [URL=#]?[/URL]       1      =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(Данные[Телеканал]=B9)/(Данные[Буд/раб]=C9)/((Данные[C]<=D9)*(Данные[ПО]>=D9));Данные[Affinity]);  "нет данных"  )   
 

У меня подлиннее формула...
Спасибо большое, тут логику вроде улавливаю.
Сейчас проверю по всему массиву.  
Страницы: 1
Наверх