Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA и срезы. Фильтрация определенных данных в срезе при открытии книги
 
Добрый день!
Спасибо за ответ!

Если я правильно понял, то Вы оставили только 4 последние даты с помощью PQ. Таким образом, из среза пропали остальные даты, а у юзера должна быть возможность их выбрать.

Замысел заключался в том, что когда юзер открывает файл, то у него сразу отфильтрованы только 4 последних даты, чтобы диаграммы не были переполнены. Но если ему необходимо, то он может выбирать любые даты из возможных.
Ну и как оказалось, срез созданный из умной таблицы нельзя подключить к другим сводным таблицам и диаграммам.
Поэтому нужно подумать как это сделать через сводную таблицу, которая созданы из PP.
VBA и срезы. Фильтрация определенных данных в срезе при открытии книги
 
Добрый день!
Просьба помочь написать код VBA, который бы оставлял в срезе только последние 4 даты при открытии книги. Даты постоянно добавляются.
Прикладываю пример файла как хотелось бы, чтобы было при открытии книги.
P.S. в исходной таблице все данные хранятся в PP и выводятся в сводные и на графики, из которых формируются срезы.
Как записать значение среза сводной таблицы в ячейку на листе?
 
Добрый день!

А если необходимо убрать фильтры со срезов с определенным именем, то как будет выглядеть код?

Заранее спасибо!
VBA Обновление данных на листе с паролем
 
testuser, я в VBA не очень силен, но ваш код выдает ошибку...  
VBA Обновление данных на листе с паролем
 
Спасибо большое, webley  - ваше решение помогло!

Но теперь я задался вопросом: получается, что необходимо заходить в каждый запрос PQ и отключать фоновое обновление вручную. Если запросы будут добавляться, то это опять же надо отключать вручную...

Возможно ли как-то добавить в код макроса отключение фонового обновления всех запросов в Книге? Не нашел пока такого решения, но зато нашел, что можно заменить паузу Application.Wait на Application.CalculateUntilAsyncQueriesDone, чтобы макрос дожидался обновления всей Книги и только после этого шел дальше по шагам.
Код
Sub Обновление()

    'снимаем защиту
    Worksheets("Лист3").Unprotect "1" 'цифры - это пароль
    
    'обновляем книгу
    ActiveWorkbook.RefreshAll
    
    'дожидаемся завершения обновления
    Application.CalculateUntilAsyncQueriesDone
    
    'устанавливаем защиту
    Worksheets("Лист3").Protect "1"
    
    MsgBox "Данные обновлены"


End Sub
VBA Обновление данных на листе с паролем
 
Добрый день!

Суть задачи: необходимо по нажатию кнопки снимать пароль с Листа > обновлять всю Книгу (запросы PQ, диаграммы, сводные таблицы и т.д.) > обратно защищать Лист паролем.

Прошу помощи, чтобы разобраться почему не работает кнопочный код VBA :
Код
Sub Обновление()

    'снимаем защиту
    Worksheets("Лист3").Unprotect "1" ' - пароль
    
    'обновляем книгу
    ActiveWorkbook.RefreshAll
    
    'пауза на 10 сек
    Application.Wait (Now() + TimeValue("00:00:10"))
    
    'устанавливаем защиту
    Worksheets("Лист3").Protect "1"

    MsgBox "Данные обновлены"

End Sub

Делал проверку F8 - код работает отлично, но при нажатии кнопки "Обновить данные" на Листе - процесс начинает выполняться и в конце выдает ошибку "Ячейка или диаграмма, которую вы пытаетесь изменить, находится на защищенном листе..." и данные не обновляются. Поставил даже паузу, чтобы файл мог спокойно обновиться.

Находил похожие темы, но именно подобную ошибку не встречал... Буду благодарен если отправите или наставите на путь истинный.
Преобразование текста во время (продолжительность) в Power BI
 
Добрый день!
И все таки, возможно ли средствами DAX вывести значение продолжительности времени больше 24 часов, чтобы оно отображалось в сводной таблице как продолжительность времени, а не как текст и, соответственно, чтобы можно было потом сортировать по этому значению? Например: затрачено было 47:22, где 47 - часы, а 22 - минуты.
У меня получилось только с запятой, а с двоеточием не получается...
Код
=VALUE(HOUR([ЗатраченноеВремя])&","&MINUTE[ЗатраченноеВремя])
Изменено: Stanislavsky7 - 10.04.2023 10:54:11
DAX/PIVOT Вернуть значение за предыдущий "непустой" период
 
Добрый день, всем небезразличным!
Прошу помощи в написании формулы DAX.

Необходимо вернуть среднюю цену за предыдущий месяц закупки, но если в прошлом месяце закупок не было, то необходимо вернуться назад до ближайшего месяца закупки и рассчитать среднюю цену закупки этого месяца. Это необходимо для дальнейшего вычисления динамики изменения средней цены.

Пробовал через формулы DATEADD и PREVIOUSMONTH, но они хороши только если закупки были сделаны в каждом месяце, без пропусков. А в моем случае, есть пропуски по месяцам закупки и понимаю, что нужно добавить условие в формулу типа LASTNONBLANK, но как ее правильно написать не понимаю...
Код
=CALCULATE('Таблица1'[Средняя цена];PREVIOUSMONTH('Calendar'[Date]))

Результат, как в идеале должно быть, добавил в файл примера.
Изменено: Stanislavsky7 - 30.09.2022 08:15:52
Pivot/DAX. Значение последней даты, Необходимо определить цену последней даты закупки
 
StepanWolkoff, СПАСИБО Тебе большое, добрый человек!  :)
Мера рабочая! Теперь пошел изучать и вникать, как она работает!)))

Да, мне нужно было вывести цену только в сводную. Дальнейших вычислений пока что не предполагается, но кто знает...)
Про столбцы спасибо, стараюсь не плодить, оставил для примера. Обычно "экспериментирую" и потом удаляю.
Pivot/DAX. Значение последней даты, Необходимо определить цену последней даты закупки
 
Добрый день!
Прошу помощи или подсказки по вопросу ниже. Пытаюсь "подружиться" с Pivot, но "дружба" пока не всегда взаимная...    :sceptic:

Дано:
Есть повторяющаяся номенклатура, которая покупалась несколько раз в году в разные месяцы. Одна покупка - одна строчка в модели данных.

Задача:
Определить цену последней даты закупки для каждой номенклатуры и вывести значение в сводную таблицу.

Пробовал несколько вариантов:

1. =CALCULATE(
MAX(
MainTable[Дата закупки]);
ALLEXCEPT(MainTable;MainTable[Код]))
(получилось определить дату последней закупки по каждой номенклатуре);

3. =CALCULATE(
AVERAGE([Цена]);
ALLEXCEPT(MainTable;MainTable[Код]))
(получилось определить среднюю цену для каждой уникальной номенклатуры);

3. =CALCULATE(
AVERAGE([Цена]);
ALLEXCEPT('MainTable';MainTable[Код]);
LASTDATE('MainTable'[Дата последней закупки]))
(пытался добавить фильтр LASTDATE, но ничего не вышло...);

4.  =CLOSINGBALANCEYEAR(
AVERAGE([Цена]);
'MainTable'[Дата закупки];
ALLEXCEPT(MainTable;MainTable[Код]))
(получилось определить цену последней даты закупки, но подтягиваются цены только тех номенклатур, где есть дата закупки 31.08.2022, остальные не определяются...)

Заранее СПАСИБО за помощь!
Изменено: Станислав Пьяненков - 16.09.2022 10:36:28
Страницы: 1
Наверх