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

Страницы: 1 2 3 4 След.
[PBI], [DAX] - мера которая рассчитает остаток в том случае, если его нет для конкретного периода
 
Добрый день!
Прошу помощи знающих в написании такой меры в DAX, PBI.

Смысл её в том, чтобы она проверяла, есть ли Остаток_фактический (>0) в таблице в предыдущем месяце. Если фактического остатка нет, то делать расчёт по формуле:
Код
Остаток предыдущего месяца (фактический или расчетный) + Закупки - Продажи.

Проблема в том, что не получается сделать взаимозависимый расчет с предыдущем месяцем так, как это сделано в приложенном Эксель-файле (в колонке E прописана формула, как надо).

Так же прикладываю *.pbix где мои попытки сделать что-то похожее (мера: formula2), но максимум чего добился - правильных данных до марта, после него расчет уже идёт кривой.
Изменено: caustic - 29.02.2024 16:06:08
caustic
[Power Query/DAX] найти и заменить первый найденный символ справа
 
Добрый день!
Подскажите пожалуйста, как можно с помощью PQ или DAX привести значения вида:
Код
one_and_only_001_mail.ru
к виду:
Код
one_and_only_001@mail.ru
Привязываться к окончанию или кол-ву символов нельзя, т.к. домены и названия email-ов разные.

То есть нужно что-то вроде: начни поиск справа (с конца записи) и замени первый найденный символ "_" на символ "@"
caustic
[Power BI - DAX] Мера для расчета аккуратности планирования
 
Добрый день!
Подскажите, пожалуйста, как правильно написать меру в DAX Power BI, чтобы она считала показатель аккуратности по нужной логике. Смотрите вложение. Дано:
  1. в диапазоне колонок A:E исходная таблица в качестве источника;
  2. в ячейке M3 - как надо с помощью меры используя исходную таблицу рассчитать аккуратность;
  3. в ячейке V3 - как сейчас мера считает аккуратность.
Нужно если через визуальный срез в PBI пользователь выбрал сразу 2 месяца (например январь и февраль), то мера считала разницу без разбивки на месяца (выбранные месяца должны быть в контексте). Сейчас она считает разбивая выбранные месяца и как следствие расчёт аккуратности не правильный.
В качестве примера привел простую DAX формулу. Что только не использовал и какие комбинации не применял между SUMX, SUMMARIZE, CALCULATE - у меня не получилось научить меру рассчитать аккуратность из пункта 2, не используя вспомогательных таблиц.
Код
Аккуратность = 1 - SUM('table'[разница]) / SUM('table'[План])

Может у вас найдется решение?
Изменено: caustic - 18.08.2023 15:39:24
caustic
[Power Query] Вернуть данные аналогичного периода прошлого года
 
Добрый день!
Подскажите, пожалуйста, как в квери будет выглядеть формула вычислительной колонки, которая вернёт данные аналогичного месяца но за прошлый год?
Нужен ли файл? табличка как скрине

Например: в колонке [Прошлый год] по продукту за июнь 2022 года будут данные по этому же продукту за июнь 2021 года.
Изменено: caustic - 19.12.2022 11:48:04
caustic
[DAX] определить максимальный номер недели и подставить его значение во все строки
 
Добрый день!
облазил форумы, но не смог до конца заставить работать формулу. Прошу помощи:

Нужно добавить вычислительный столбец, который бы определял максимальный номер недели в пределах месяца/магазина/продукта и возвращал его значение во все строки. Использую данную формулу:
Код
Столбец1 = CALCULATE(SUM('table'[Значение]),
ALLEXCEPT('table','table'[название магазина],'table'[название продукта],'table'[номер_месяца]),
'table'[номер_недели] = MAX('table'[номер_недели])))

Пример, что хочу видеть в колонке Столбец1 во вложении.
Изменено: caustic - 31.10.2022 16:16:28
caustic
[Power BI] - вопрос по визуальному элементу Матрица: разделить недели мер
 
Всем привет!
Подскажите, пожалуйста, возможно ли в данном визуальном элементе сделать так, чтоб недели не объединяли в себя две меры а сначала шли все недели 1меры и далее все недели 2 меры.
Изменено: vikttur - 15.09.2021 10:28:36
caustic
[MDX] выгрузка данных за последние несколько месяцев
 
Добрый день!
Может здесь найдутся те, кто разбирается в следующем вопросе :-)
Есть кусок MDX кода, который настроен сейчас так, что выгружает данные за текущий месяц. Пытаюсь научить его брать последние 3 месяца (как на примере ниже), но выдает ошибку. Как этот момент правильно прописать в примере кода ниже:

Код
NON EMPTY {
StrToMember("[Calendar].[Calendar YMD].[All].&[2021].&[" +  Format(Now(),"MM")  + "]"),
StrToMember("[Calendar].[Calendar YMD].[All].&[2021].&[" +  Format(Now()-1,"MM") + "]") *
Distinct(Hierarchize(

Изменено: caustic - 24.07.2021 07:23:54
caustic
PQ: работа со справочниками, подстановка категории путём перебора
 
Добрый день!
Подскажите, пожалуйста, по такому вопросу. Есть мини справочник-таблица из 2х колонок: Кол-во и категория. И в зависимости от кол-ва (>=) возвращается соответствующая категория.

Кроме как с помощью IF, перечисляя все варианты, есть ли более универсальный способ (функция) в PQ подтянуть из этого справочника в другой запрос категорию, проверяя колонку Кол-во.

Грубо говоря, чтоб я зашел в этот справочник, скорректировал новое кол-во и у меня PQ сам пересчитал категории без редакции формул.
 
Кол-вокатегория
841
612
373
194
15
Изменено: vikttur - 25.06.2021 15:43:47
caustic
[Power BI] как в визуальном элементе "Таблица" просуммировать все строки
 
Добрый день!
Подскажите, пожалуйста, по следующему вопросу. В визуальном элементе "Таблица" есть возможность включить строку "Итоги", которая суммирует данные по строкам. Но если в этой колонке стоит мера, которая вычисляет данные по своей формуле - эта самая формула применяется и к строке "Итоги", что в моем случае делать не нужно. Нужна сумма этих самых вычислений. Как заставить строку "Итоги" просуммировать такие вычисления?
Изменено: caustic - 25.02.2021 10:17:00
caustic
[Power Query/DAX] Реализовать подсчет значений в определенном диапазоне внутри таблицы
 
Всем привет!
Просьба помочь со следующим вопросом. Есть таблица с данными, нужно подсчитать кол-во значений >=15% в заданных границах диапазона. В приложенном примере в ячейке S2 то, что хочу получить но через Power Query. Я нашел на просторах интернета как это сделать просто для таблицы с данными. Но проблема в том, что нужно задать границы первого и последнего столбца, значения в которых будут участвовать в подсчете. Вот здесь прошу помощи.
caustic
Суммировать значения из разных колонок в зависимости от условия (периода)
 
Добрый день!
Подскажите пожалуйста, как должна выглядеть формула в ячейке N3, чтобы получить сумму данных в зависимости от выбранного клиента (ячейка M3) в заданный диапазон недель (ячейки K1, L1). Пример прикладываю.

спасибо!
caustic
[VBA/VBS] открыть с помощью скрипта книгу с паролем
 
Добрый день!
в vbs не силен, поэтому прошу помощи. Ниже под заголовком "конец кода"  - последняя часть скрипта vbs.

Если в кратце - скрипт при запуске активирует COM-надстройку для экселя, после запускает необходимый файл excel, запускает в нем макрос Scheduled_Refresh сохраняет и закрывает книгу. Подскажите, как правильно видоизменить код, как понимаю, где то в этой строке:
Код
objExcel.workbooks.open args(0)
чтобы при открытии запароленной книги, вводился пароль. У меня есть нарытый пример (ниже) но как его внедрить в свой код, не понимаю.

найденный пример:
Код
XLSX = "C:\test\file.xlsb"
PASS = 13

With CreateObject("Excel.Application") 
  .Workbooks.Open XLSX, 0, False, 5,, PASS
конец кода:
Код
objExcel.workbooks.open args(0)
objExcel.Visible = false
objExcel.run "Scheduled_Refresh"
objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close(0)
objExcel.quit
ObjShell.run ("cmd /c taskkill /IM EXCEL.EXE /t /f")
Set objExcel = nothing
caustic
[VBS] научить надстройку встраиваться в уже открытую книгу Excel
 
Всем привет
подскажите пожалуйста, как решить такую задачу:

 Есть надстройка эксель в формате .exe. При клике на этот .exe  при любой открытой книге Excel - надстройка встраивается в книгу новой вкладкой. Если же Excel не запущен - экзешник создает новую книгу и встраивается отдельной вкладкой.
 У меня не получается научить скрипт VBS открывать сначала заданную книгу, а после активировать надстройку, чтобы она внедрялась в эту самую открытую книгу. Почему то любые танцы с бубном над скриптом приводят к одному и тому же: запускается отдельно нужная книга, и запускается отдельно новая книга с внедренной в нее надстройкой. Будто бы надстройка не обнаружила уже открытую книгу чтоб  внедриться в неё.
 Как научить через VBS надстройку встраиваться именно в уже открытую скриптом книгу?
Код
Option Explicit
Dim WshShell, objXL, objWorkbook


Set objXL = CreateObject("Excel.Application")
objXL.Visible = TRUE
Set objWorkbook = objXL.Workbooks.Open("C:\Users\Me\Desktop\Update.xlsb")

Dim wsh

Set wsh = WScript.CreateObject("WScript.Shell")
wsh.Run("""C:\Program Files (x86)\SAP\Office\Launcher.exe""")
Set wsh = Nothing
Изменено: caustic - 30.07.2018 17:21:46
caustic
Расширенный фильтр. Поиск по нескольким условиям
 
Добрый день. Почитал несколько статей с примерами как работает автофильтр, но не нашел решения для моего случая: как правильно оформить критерии для поиска ячейки, одно значение которой будет содержать и ="=*Люберцы*" И ="=*Ленина*". В расширенном автофильтре есть такая возможность?
Изменено: caustic - 12.03.2018 12:52:51
caustic
[VBA] подключения к книге
 
Добрый день!
Есть в Экселе на вкладке "Данные" опция "Подключения". Выскакивает окно, где списком указаны все существующие подключения к этой книге. подскажите пожалуйста, как с помощью макроса обновить конкретное подключение?
caustic
[VBS] как отключить Надстройку COM через скрипт
 
Добрый день
есть скрипт VBS который запускает надстройку COM при открытом Excel
Код
ObjShell.run ("cmd /c cd %ProgramFiles(x86)%\Objects\Office AddIn & nadstroika.exe /app XLS /lb 3")

Подскажите пожалуйста, какой строчкой VBS скрипта ее можно отключить?
caustic
[VBA] цикл чувствителен к регистру
 
Добрый день. Ниже часть макроса. Столкнулся с проблемой на 5ой строке. Если найденный циклом вариант, например "Солнце" будет записан как "СОЛНЦЕ", либо как то иначе (только заглавные, только строчные, либо вперемешку), то цикл по заданному условию скроет эту строчку, чего делать не надо. Как научить цикл игнорировать в этом случае регистр?

Код
Dim avArr
avArr = Array("Солнце", "Луна", "Облака", "Воздух")
For h = 0 To 3
For c = lLastRowEnd To 9 Step -1
    If Not Cells(c, 2).Value Like "*" & avArr(h) & "*" Then
        Rows(c & ":" & c).EntireRow.Hidden = True
    End If

спасибо!
caustic
[VBA] Копирование отфильтрованных защищенных ячеек, как скопировать видимые ячейки в защищенной книге
 
Добрый день! вопрос такой: как с помощью VBA скопировать отфильтрованные ячейки на защищенном листе?
Строка кода ниже не работает, выскакивает ошибка что мол защита на листе стоит не могу работать, хотя руками защищенный отфильтрованный диапазон копируется. Есть ли решения по такому вопросу?
Код
.SpecialCells(xlCellTypeVisible)(1).copy 

Спасибо!

caustic
подсчитать кол-во наборов из уникальных продуктов в каждой точке, с учетом что один набор состоит из 5-ти уникальных продуктов
 
Есть задача подсчитать кол-во пакетов проданных каждой точке (см таблицу из вложения). Суть в чем: 1 пакет = 5 уникальных единиц продукта. Н-р если в таблице 6 столбцов и в каждом из столбцов стоит значение 6 - то кол-во пакетов будет равно 6. Если в одной колонке к примеру будет значение 5 - то кол-во пакетов будет все равно 6, т.к. в оставшихся пяти колонках по прежнему будет набираться нужное кол-во уникальных продуктов в 6 пакетов. Но задача усложняется тем, что кол-во столбцов больше 6 и оно не всегда фиксировано. В приложенном файле я сделал пример с  14-ю колонками. Помогите пожалуйста с идеями: как расчет кол-ва пакетов для каждой точке можно уместить в одну формулу?
caustic
Ячейки не блокируются при использовании опции "защитить лист"
 
Добрый день. Столкнулся с такой проблемой: в книге не защищается эта колонка с ячейками (см вложение). в чем может быть причина?
caustic
[VBA] команда в цикле, которая должна выполниться один раз
 
Добрый день
  Есть некий код макроса с циклом, который открывает поочередно файлы эксель из папки и консолидирует с них информацию. Можно ли внутри цикла прописать код, который бы выполнился один раз при открытии макросом первой книги (не важно какой) и в последующих он бы игнорировался? Выполнение этого кода завязано с книгой, которую цикл откроет, поэтому вне цикла его вставлять смысла нет.

  Ниже - упрощенный пример для моего вопроса. Как сделать выполнение строчки msgbox единоразово?
Код
For i = 1 To 10
    MsgBox ("hello!")
    Range("A1").Select
    Range("B1").Select
    Range("C1").Select
Next i
caustic
[VBA] пропуск шагов для оператора For Each
 
Всем привет
Подскажите пожалуйста, как для оператора For Each сделать перескок на 2 шага (по аналогии For c = 1 to 10 step 2). Если конкретно, то нужно при нахождении ячейки удовлетворяющей условию .Interior.Color = 5296274 выполнялся код в блоке If...End If и цикл продолжал свою проверку пропустив 2 шага,(или 2 строчки, если разбирать конкретно данный пример)

Код
mybook.Activate
For Each c In Range(Cells(21, 11), Cells(ilastESR - 1, 11)) 'äîëè
    If c.Interior.Color = 5296274 Then
       With c
            .Copy: bklist.Sheets("Calc").Cells(lLastRow3 + 9, c.Column).PasteSpecial xlPasteValues
            .Offset(1, 0).Copy: bklist.Sheets("Calc").Cells(lLastRow3 + 10, c.Column).PasteSpecial xlPasteValues
            .Offset(2, 0).Copy: bklist.Sheets("Calc").Cells(lLastRow3 + 11, c.Column).PasteSpecial xlPasteValues
       End With
       lLastRow3 = lLastRow3 + 10
    End If
Next
caustic
Вернуть буквенный диапазон (адрес) колонки
 
Всем привет! у меня короткий вопрос.
У меня есть такая формула и если ее вставить н-р в ячейку A1 - она вернет A:A и тд.
Код
ЛЕВСИМВ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);1)&":"&ЛЕВСИМВ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);1)
А есть ли более простая запись формулы, которая бы возвращала буквенный диапазон колонки?  
caustic
Вернуть значение из массива по заданному условию, значение должно быть больше или равно одного значения, но и не более другого значения
 
Добрый день!
Подскажите пожалуйста, можно ли, н-р формулой массива, решить мою задачу из вложения. А именно: в ячейке B1 пишу некий % выполнения, в ячейке B2 формула перебирает значения из 1ой строчки таблички справа и подставляет значение из 2ой строчки по заданному условию: в B2 значение должно быть больше или равно одного значения, но и не более другого значения. В файле пример - думаю из него станет понятней суть задачи.
Изменено: caustic - 04.11.2016 11:58:19
caustic
Связать несколько диаграмм PP с одним Excel-исходником
 
Всем доброго дня!
Опишу ситуацию: создаю непосредственно в PP (Power Point) диаграмму. Нужно это для того чтобы Excel-исходник был непосредственно внедрен в PP (без всякого рода ссылок на локальные адреса и тп). ОК, все работает. Но добавляя еще один график (даже делая копию первого), книга Excel-исходника создается абсолютно новая и никак не связана с исходником от первой диаграммы. Вопрос: как создать несколько диаграмм с одним Excel-исходником (чтобы он был внедрен в файл PP без ссылок на внешние адреса)

офис 2010, 2013

Спасибо!
caustic
Формулы массива возвращают НД по непонятным причинам
 
Добрый день!
Подскажите пожалуйста, по какой причине не работают обе формулы? См вложение.
Вроде бы все правильно написано, но формула в обоих случаях производит расчет лишь в том случае, если в Массив1 в качестве ключа указан диапазон из одной или трех ячеек. Во всех остальных случаях возвращает НД, что странно.

PS офис 2013
caustic
Получить сумму всех ячеек по определенным колонкам
 
Добрый день!
Подскажите пожалуйста решение такой задачки. В диапазоне C3:C7 необходимо получить суммарный объем по продуктам со всех грядок, с условием:
если по продукту ячейка из колонки D пустая, то к сумме продукта добавляется объем из ячейки колонки C. Если в столбце D ячейка НЕ пустая (в т.ч. =0), к сумме продукта добавляется объем из ячейки D.

Смотрите файл во вложении
caustic
Как подсчитать кол-во ячеек со значением в массиве данных по заданному критерию
 
Добрый день!
Помогите пожалуйста подсчитать кол-во ячеек >0 в массиве таблице, по заданному критерию из колонки A (во вложении таблица).
Есть вариант использовать просто СЧЕТЕСЛИМН по каждой колонке и далее это дело все суммировать. А есть ли более простой способ с указанием всего массива таблицы а не просто отдельно по колонкам?
Изменено: caustic - 07.06.2016 16:23:58
caustic
[VBA] Eсли в папке нет файлов, перейти на указанную строку макроса, как правильно задействовать оператор Go To
 
Добрый день
У меня довольно простой вопрос, но поиском его найти не смог :)
Есть некий код, который открывает файл из папки open. Как правильно будет внедрить оператор Go To (либо альтернативу), что если в папке open нет файлов, то переходить на заданную строку, т.е. опускать часть кода

Код
    Dim MyName As String
    Dim MyPath As String
    Dim sPath As String
        MyPath = "C:\Users\PC\Desktop\open\"
        MyName = Dir(MyPath & "*.xlsm")
         Do While MyName <> ""
            sPath = MyPath + MyName
            Excel.Application.Workbooks.Open sPath
            MyName = Dir
         Loop
спасибо!
caustic
[VBA] выскакивает ошибка при запуске записанного макроса
 
Всем привет. подскажите пожалуйста из-за чего так происходит и как это исправить:
запускаю макрорекодер, активирую ячейку с формулой, жму Enter, останавливаю макрорекодер
Далее выделяю эту же ячейку, жму запустить этот макрос и вылетает ошибка. Причем с формулами попроще (короче) проблем нет,  Так, навскидку, в чем может быть проблема?

Ошибка: Run-time error '1004': Application-defined or object-defined error
Код
Sub macros1()

    ActiveCell.FormulaR1C1 = _
        "=IF(OR(R[-1]C4=""cat"",R[-1]C4=""dog""),SUM(SUMIF(list2!R8C1:R13000C1,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))),list2!R8C14:R13000C14),SUMIF(list2!R8C2:R13000C2,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))),list2!R8C14:R13000C14),SUMIF(list2!R8C3:R13000C3,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""." & _
        "]))),list2!R8C14:R13000C14),SUMIF(list2!R8C4:R13000C4,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))),list2!R8C14:R13000C14)),SUM(SUMIF(list2!R8C1:R13000C1,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))),list2!R8C13:R13000C13),SUMIF(list2!R8C2:R13000C2,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))" & _
        "8C13:R13000C13),SUMIF(list2!R8C3:R13000C3,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))),list2!R8C13:R13000C13),SUMIF(list2!R8C4:R13000C4,CONCATENATE(R[-1]C[-9],RIGHT(RC[-3],LEN(RC[-3])-SEARCH(""."",RC[-3]))),list2!R8C13:R13000C13))/1000)"

End Sub

Эта же формула в эксель:
=ЕСЛИ(ИЛИ($D5="cat";$D5="dog");СУММ(СУММЕСЛИ(list2!$A$8:$A$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$N$8:$N$13000);СУММЕСЛИ(list2!$B$8:$B$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$N$8:$N$13000);СУММЕСЛИ(list2!$C$8:$C$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$N$8:$N$13000);СУММЕСЛИ(list2!$D$8:$D$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$N$8:$N$13000));СУММ(СУММЕСЛИ(list2!$A$8:$A$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$M$8:$M$13000);СУММЕСЛИ(list2!$B$8:$B$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$M$8:$M$13000);СУММЕСЛИ(list2!$C$8:$C$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$M$8:$M$13000);СУММЕСЛИ(list2!$D$8:$D$13000;СЦЕПИТЬ(C5;ПРАВСИМВ(I6;ДЛСТР(I6)-ПОИСК(".";I6)));list2!$M$8:$M$13000))/1000)
caustic
Страницы: 1 2 3 4 След.
Наверх