Страницы: 1
RSS
Power BI: Расчет своевременности поставок оборудования с учетом праздников и выходных, Power BI: Расчет своевременности поставок оборудования с учетом праздников и выходных
 
Добрый день!

Есть формула, которая считает своевременность поставки оборудования:

Своевременность поставки = SWITCH(TRUE(),ISBLANK('Sheet1'[Дата прихода на склад.1]),"ожидает доставку",'Sheet1'[Дата прихода на склад.1]<=('Sheet1'[Планируемая дата поставки]+3),"своевременно","несвоевременно").

Но проблема возникла с выходными и праздничными днями.
По подсказкам (https://www.planetaexcel.ru/techniques/24/13289/) создала список праздничных и выходных дней с колонками год и дата (во вложении).

Если [Планируемая дата поставки]+3 попадает на нерабочий день из файла, то должна браться дата, соответствующая первому рабочему дню после нее.

Понимаю, что вместо [Планируемая дата поставки]+3 нужна некая переменная, в которой как раз и будет прописана логика. Но вот саму логику никак не могу прописать.
Что бы я не делала, только ломаю то, что сейчас есть(((

Помогите, пожалуйста, решить проблему.
Заранее благодарю!
 
Nataly_Zot, добрый день. А Вы упорно не хотите выкладывать подготовленные файлы-примеры (а сам календарь и вот эти вот [Дата прихода на склад.1] и остальные столбцы где?), что в прошлой теме, что сейчас . По хорошему, нужно делать правильно Календарь с нужными столбцами. Во вложении, как вариант.
Изменено: Alex - 22.04.2025 16:44:05
 
Извините, вложила весь файл.
 
Nataly_Zot, переделывать не буду, т.к. новый пример мало отличается от того, что я вложил в прошлое сообщение. Берите его за основу.
 
Alex, я вас совсем не поняла.
Файл есть, но как мне в расчете убрать нерабочие дни.

Если правильно понимаю, должно быть как-то так:

Своевременность поставки =

var XXX = формула, согласно которой если 'Sheet1'[Планируемая дата поставки]+3 попадает на какую-то дату из [Нерабочие], то в нее сохраняется ближайшая рабочая дата. Если 'Sheet1'[Планируемая дата поставки]+3 попадает на дату, которой нет в списке [Нерабочие], то сохраняется эта дата.

SWITCH(TRUE(),ISBLANK('Sheet1'[Дата прихода на склад.1]),"ожидает доставку",'Sheet1'[Дата прихода на склад.1]<= вместо имеющегося выражения пишем как раз переменную, в которую сохранена дата XXX ,"своевременно","несвоевременно").

Вот с этой переменной у меня загвоздка((
 
Nataly_Zot, а Вы файл смотрели, который я скинул?
Порядок действий:
1. создаем полноценный календарь - таблица Календарь (но если вы работаете с датами, полноценный Календарь в модели должен быть однозначно)
2. добавляем столбец IsWorking в таблицу Календарь на основании Ваших нерабочих дней - true() - это рабочий день, false() - нерабочий (см. формулу в столбце IsWorking )
3. создаем вычисляемый столбец  Столбец1 в Таблице1, формула:
Код
=
var _cur_plan_date = 'Таблица1'[Plan date] + 3
var _tab = FILTER('Календарь'; 'Календарь'[Date] >= _cur_plan_date && 'Календарь'[IsWorking] = TRUE())
var _next_working_day =MINX(_tab; 'Календарь'[Date])
var _result = SWITCH(TRUE();ISBLANK('Таблица1'[Fact date]);"ожидает доставку"; 'Таблица1'[Fact date] <= _next_working_day   ; "своевременно"; "не своевременно")
return
_result
_cur_plan_date - плановая дата в текущей строке + 3 дня
_tab - таблица Календарь, отфильтрована 'Календарь'[Date] >= _cur_plan_date && 'Календарь'[IsWorking] = TRUE(), т.е. получаем таблицу с датами от плановый даты и дальше с учетом рабочих дней
_next_working_day - нужная дата, т.е. если _cur_plan_date - рабочий день, то это она MINX(_tab; 'Календарь'[Date]), если нет то будет ближайший рабочий к плановой дате
_result - итоговая формула.
Так понятнее?
Изменено: Alex - 22.04.2025 16:16:52
 
Nataly_Zot, поменял формулу в сообщении 6, с учетом
Цитата
написал:
если 'Sheet1'[Планируемая дата поставки]+3 попадает на какую-то дату из [Нерабочие]
 
Alex,
Почему-то работа с календарями и датами всегда вызывает у меня массу проблем :-) ранее также испытывала проблемы с WorkFusion (платформа для написания Робота). Но жизнь заставляет, буду учиться)))

Спасибо за разъяснения, так намного понятнее. Буду разбираться с формулами и пробовать.

Ваш файл конечно смотрела, но тут или я слепая, или что-то не то приложено :-).

Вот что я вижу в нем:
Plan dateFact dateStatus
31.03.202531.03.2025Своевременно
24.12.202409.01.2025Несвоевременно
30.06.2025Не   доставлено
11.02.202509.02.2025Своевременно
25.04.202528.04.2025Своевременно
25.04.202529.04.2025Несвоевременно
Эту полностью копировать не стала)) в приложенном файле весь список дат
Нерабочие дни
01.01.2025
02.01.2025
03.01.2025
04.01.2025
05.01.2025
06.01.2025
Приложите, пожалуйста, ваш файл, который, если я правильно понимаю, со столбцом IsWorking, еще раз.

БОЛЬШОЕ СПАСИБО!
Вы очень помогаете!
 
Nataly_Zot, файл в сообщении 2. Таблица 1 - таблица расчета, Календарь - это календарь со всеми датами за нужное кол-во лет, Таблица 2 - это Ваш список нерабочих дат.

Изменено: Alex - 22.04.2025 16:52:13
 
Alex, Спасибо!

В файле из сообщения #2 вижу другое, там 2 листа, один с моими начальными входными данными, другой с нерабочими датами. Ничего похожего на скрины выше.
Поэтому сразу вас и не поняла совсем.
Изменено: Nataly_Zot - 22.04.2025 16:56:00
 
Nataly_Zot,
Цитата
написал:
Ничего похожего на скрины выше
Вот это поворот  8-0

Скрины - это рабочая область Модели данных (Power Pivot)

Изменено: Alex - 22.04.2025 17:04:00
 
Alex, Еще раз хочу поблагодарить вас за помощь! Со всем разобралась. Все работает, как надо.
Полноценный календарь себе сделала на будущее)
Надеюсь, больше про даты спрашивать не буду))
Оказалось, что у меня нет в Excel надстройки Power Pivot, решаю этот вопрос с админами.
СПАСИБО!
 
Nataly_Zot, добрый день.
Цитата
написал:
Со всем разобралась. Все работает, как надо.
Рад, что у Вас все получилось.
Цитата
написал:
Оказалось, что у меня нет в Excel надстройки Power Pivot, решаю этот вопрос с админами.
Какая версия Excel у Вас. Может нужно ее включить в надстройках (установить Галочку)?
Страницы: 1
Читают тему
Наверх