Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 След.
Как пользовательской функции RegExp отдать сразу несколько аргументов списком (вместо одного строкового), Power Query M
 
Андрей VG, для каждого случая, где RegEx нашел совпадение выражения, вместо true мне нужно вывести маркер этого регэкспа, из второго столбца таблицы с регэкспами    

Файл прилагаю
Изменено: Дмитрий Марков - 12 авг 2020 10:36:14 (добавление файла образца с итогами)
Как пользовательской функции RegExp отдать сразу несколько аргументов списком (вместо одного строкового), Power Query M
 
Для замены параметр ввел, .replace вместо .test применил, не очень понимаю, чего не хватает для логики, может нужен List.MatchesAny …
Код
let
    rexExpContains = (string, pattern, замена) =>
    Web.Page(
        "<script>
            var regExp = /" & pattern & "/i;
            document.write(regExp.replace('" & string & "', '" & замена & "'));
        </script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}
in
    rexExpContains
Изменено: Дмитрий Марков - 11 авг 2020 11:52:34
Как пользовательской функции RegExp отдать сразу несколько аргументов списком (вместо одного строкового), Power Query M
 
Цитата
Андрей VG написал: одно найдите там некоторую неточность
Петров, я думаю, на самом деле Булкин)

Андрей VG, поправьте меня пож-та, (пока не могу разобраться с ее подключением)
Как пользовательской функции RegExp отдать сразу несколько аргументов списком (вместо одного строкового), Power Query M
 
Андрей VG, извините, не знаю, как зовут Вас по отчеству - Вы не первый раз мне помогаете - Большое спасибо! Пока пойду осмысливать Ваш пример))  
Как пользовательской функции RegExp отдать сразу несколько аргументов списком (вместо одного строкового), Power Query M
 
Коллеги, здравствуйте,

Помогите пож-та встроить в функцию возможность проверки из нескольких вариантов для RegExp

Читаю тему 'Регулярные выражения (RegExp) в Power Query', вижу строку var pattern = /" & regex & "/gi;, но такой практики пока не имеется, чтобы самому перестроить на получение списка из таблицы с вариантами проверки регэкспов. У меня их 15 штук, поэтому хотелось бы разработать одно решение, вместо 15 разных.
(причем, в моем случае, нужна простая проверка значения на наличие регэкспа, есть, или нет; и при наличии промаркировать соответствующим термином из той же таблицы с регэкспами - это уже целевая задача)


Код
let   fx=(txt as text, regex as text, delim as text)=>
    Web.Page(
        "<script>
            var x = '" & txt & "';
            var delim = '" & delim & "';
            var pattern = /" & regex & "/gi;
            var result = x.match(pattern).join(delim);
            document.write(result);
        </script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}
in
fx
Возможно ли наименованию столбца прописать префикс, если наименование похоже на 'ABC' (или содержит 'ABC'), Power Query M
 
Первоначальный запрос
Цитата
присваивать единый префикс столбцам, наименованиями соответствующими маскам/шаблонам

решен с помощью формулы на M
Код
= Table.TransformColumnNames(ЧистыеНаимСтолбцов, each if Text.Contains(Text.BetweenDelimiters(_, "словия ", " кв"), Text.From(Excel.CurrentWorkbook(){[Name="ВыбранФайл"]}[Content]{0}[Кв])) then "1." & Text.Replace(_,_,_) else _)

Отдельное большое спасибо Hugo и PooHkrd
Изменено: Дмитрий Марков - 6 авг 2020 11:34:45
Возможно ли наименованию столбца прописать префикс, если наименование похоже на 'ABC' (или содержит 'ABC'), Power Query M
 
Отлично ловит нужный столбец, пытаюсь сформулировать критерий, чтобы строка выбирала этот столбец и все остальные непохожие, т.е. похожие
пытаюсь удалить (которые одновременно содержат {"словия ",  " кв"}, и не содержат "2",  
Возможно ли наименованию столбца прописать префикс, если наименование похоже на 'ABC' (или содержит 'ABC'), Power Query M
 
Цитата
Hugo написал:
если в названиях оставить только цифры и "кв"
Да, или унифицировать имеющиеся, думаю о КенПулсе ...
Возможно ли наименованию столбца прописать префикс, если наименование похоже на 'ABC' (или содержит 'ABC'), Power Query M
 
Уважаемые коллеги, направьте пож-та в нужное русло:

Проблема: заголовки столбцов не только меняются местами, но и регулярно переименовываются в ежеквартальном/ежемесячном цикле. Для квартальных ужасает наличие похожих столбцов с данными неактуальных кварталов

Главная цель – отсеять все, кроме столбца по текущему кварталу (в данном случае текущий квартал 2 - его необходимо сохранить), в таблице заранее создан столбец с номером квартала 2


Имеются след наименования столбцов:
условия работы в 1-м   кв 2020
условия 2 кв 2020
условия работы в 3 м кв 2020
В процессе решения я обратил внимание на функцию сохраняющую/удаляющую столбцы по общему признаку:
Код
УдаленыСтолбцыМатр = Table.RemoveColumns(ЧистыеНаимСтолбцов, List.Select(Table.ColumnNames(ЧистыеНаимСтолбцов), each Text.Contains(_, "матр"))),

... вследствие чего возникла идея поочередно присваивать единый префикса столбцам, наименованиями соответствующими маскам/шаблонам, и последующим сохранением Table.SelectColumns() в таблице только столбцов с этим покритериально расставленным префиксом  
Ошибка: Некоторые параметры представления неприменимы
 
[img]file:///C:/Users/0203-rk/Documents/Ошибка%2520Некоторые%2520параметры%2520представления%2520неприменимы.png[/img]

Решено:

Опытным путем выяснил, что 'Представления' переключаются только при полностью отключенной 'Защите листов' – на всех листах одновременно. Всех скрытых листов это тоже касается  
При этом, 'Защита книги' может оставаться включенной – пользовательские представления будут хорошо переключаться
Информация о лицензии для этого продукта не найдена.
 
[img]file:///C:/Users/0203-rk/Documents/Ошибка%2520Некоторые%2520параметры%2520представления%2520неприменимы.png[/img]
Информация о лицензии для этого продукта не найдена.
 
Application-defined or object-defined error, VBA
 
Hugo, все отлично сработало, сначала попал в циклическое обновление - отключил события, стало обновляться как надо, активацию и воркшит убрал, как ненужные, а статусбар вернул

Большое Вам спасибо!  
Application-defined or object-defined error, VBA
 
Не могу найти информацию, в чем заключается ошибка и как ее правильно исправить … Настраиваю обновление источника сводной по изменению ячейки.  

Буду благодарен за совет

Код
Private Sub Worksheet_Change(ByVal Target As Range)
'On Error Resume Next
Worksheets(1).Activate
If Intersect(Target, Worksheets(1).Range(Cells(4, 6))) Is Nothing Then Exit Sub
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False
Application.StatusBar = False

ActiveWorkbook.RefreshAll

Изменено: Дмитрий Марков - 14 май 2020 16:02:08
Аналог СУММЕСЛИМН с помощью DAX в PowerPivot
 
DrillPipe, большое спасибо, тема уже давно примечена и актуальна, материалы подобраны, все никак не доберусь...  
Аналог СУММЕСЛИМН с помощью DAX в PowerPivot
 
Цитата
PooHkrd написал:
С причиной ошибки разобрались?
Ваш ответ дал больше понимания, хелпы в некоторой степени смогли это непрямо подтвердить, функция выч столбцов, требует исходного контекста строки, а у меня применена в мере, отсюда и не работает, примеры - в основном про нарастающий итог на источнике... По крайней мере, помимо TotalMTD и TotalYTD, увидел вариант  c Earlier
Аналог СУММЕСЛИМН с помощью DAX в PowerPivot
 
Цитата
PooHkrd написал:
Или вы все таки разобрались почему так?
Конечно, сравнение с самим собой фильтрацию не даст, формулу писал по подобию, и вариант был первым, корректно написанным/отработавшим. И, разумеется, пока сложновато по хелпам увидеть картину работы контекстов
Да, сформулирую новую тему, спасибо
Аналог СУММЕСЛИМН с помощью DAX в PowerPivot
 
Цитата
PooHkrd написал:
А что вы пытаетесь с чем сравнить вот в этом выражении?
PooHkrd, убрав отсюда EARLIER, формула вывела сумму общего количества по бренду "Бтн" - она так первый раз заработала. Далее подобрал чуть другой вариант, он посчитал мне верное количество в адресе:
Код
=CALCULATE(
           SUM([Кол-во кор.]),
                              ALLEXCEPT('Таблица1','Таблица1'[Адрес],'Таблица1'[Бренд ТМА Крупно]),
                              FILTER('Таблица1','Таблица1'[Бренд ТМА Крупно]="Бтн" && 'Таблица1'[Статус  ПРОМО Шоубокс]<>"_ПРОМО")
          )
… догадываюсь, что эта формула может быть лаконичнее, в данный момент уже пытаюсь получить следующий показатель 'Кол-во уник. адресов, для которых Кол-во коробок >= 1', чтобы впоследствии для тех, где уникальных больше 5, считать бонус - момент кажется посложнее:
Код
=CALCULATE(
           DISTINCTCOUNT('Таблица1'[Адрес]),
             FILTER('Таблица1','Таблица1'[БатДиз SUM Бтн]>=1)
          )

задачу пока не решил, буду блгодарен, если направите в нужное направление
Аналог СУММЕСЛИМН с помощью DAX в PowerPivot
 
Уважаемые эксперты, направьте пож, что не так, в случае, где необходимо получить в сводную кол-во коробок по бренду в адресе:

Код
=SUMX(
      FILTER(
             ALL('Таблица1'),
                 'Таблица1'[Бренд ТМА Крупно] = "Бтн" && 
                 'Таблица1'[Адрес] = 'Таблица1'[Адрес]
      ),
            'Таблица1'[Кол-во кор.]
     )

в этом случае возвращает общую сумму таблицы по "Бтн", а когда пробую применить EARLIER - сообщение "... EARLIER/EARLIEST ссылается на более ранний контекст строки, который не существует."
Power Query. Вычисл. столбец с маркером по критерию
 
Ушел курить мануалы
Power Query. Вычисл. столбец с маркером по критерию
 
PooHkrd, я поражен, и нет этому предела! Очень мощно, и скорость!

Уже увидел две темы с Вашими действиями по Table.Group...
Только хочу уточнить, возможно ли именно этот фокус делать из Ленты User interface "Группировать по", или только прописанием самой функции

Большое Вам спасибо!
Power Query. Вычисл. столбец с маркером по критерию
 
Уважаемые специалисты,

Пытаюсь в PQ создать выч. столбец, в котором каждая строка с адресом должна быть промаркирована "1" в случае, если в столбце "Тип реализации" с таким адресом хоть раз встречается критерий "Бонус"

Короткий пример прилагаю  
Ошибка 1004, автоматизация рабочего файла реестра
 
Доброго времени суток,

В процессе встраивания кода, автоматизируемый файл стал на одном из этапов выдавать сообщение error 1004 Application-defined or object-defined error
Причем, пока делал части кода на маленьком файле - никаких ошибок не возникало. Как только начал объединять код в едином файле (в т.ч. нужно чтобы выполнялось два разных действия по WorksheetChange - об этом позже), ошибки пошли более-менее серийно. И вновь, как только подготовил небольшой файл примера, два срабатывания из трех код начал отрабатывать без error 1004.

Цель: автоматизировать реестр на 10000 записей
Порядок срабатывания кода:
1. WorkbookOpen - прописание ключевых формул и перекрытие значков примечаний белыми треугольниками
2. WorksheetChange - расширенный фильтр реестра по критерию в единственной ячейке, сохранение истории изменения ячеек (в ст. 1, 42, 49), вставка дат в соседние ячейки
3. WorkbookBeforeSave - удаление треугольников, скрывающих индикаторы примечаний (в большом рабочем файле идет вывод ошибки 1004)    

Также, довольно долго для WorksheetChange объединял расширенный автофильтр и сохранение истории в примечания - буду благодарен, если порекомендуете любую оптимизацию кода  



Код
Private Sub
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'Update 20141110     Sub RemoveIndicatorShapes()

'Dim pWs As Worksheet
'Dim pShape As Shape

Dim pWs As Worksheet
Dim pComment As Comment
Dim pRng As Range
Dim pShape As Shape

Set pWs = Application.ActiveSheet

For Each pShape In pWs.Shapes
    If Not pShape.TopLeftCell.Comment Is Nothing Then     'в этой строке дебаг дает желтую подсветку 
      If pShape.AutoShapeType = msoShapeRightTriangle Then
        pShape.Delete
      End If
    End If
Next
Изменено: Дмитрий Марков - 17 ноя 2019 04:59:47
Определить суммарную выручку от продажи первых 6 ед. (или не более 6 ед.) для каждой торговой точки, Сводная таблица
 
Цитата
Светлый написал:
=СЧЁТЕСЛИ(B$1:B2;[@Адрес])
Светлый, во втором примере я по похожему пути пошел, в т.ч. определил итог для каждой торговой точки, сейчас думаю как выделить часть стоимости при частичном учете
Определить суммарную выручку от продажи первых 6 ед. (или не более 6 ед.) для каждой торговой точки, Сводная таблица
 
vikttur,
Цитата
vikttur написал:
И для примера нужен такой объем данных?
Да, Вы правы, конечно правильнее было оставить две-три позиции разного типа...
Определить суммарную выручку от продажи первых 6 ед. (или не более 6 ед.) для каждой торговой точки, Сводная таблица
 
Добрый день, уважаемые эксперты,

Пока формулировал цель, подготовил два примера (архив, из-за ограничения сайта на размер файла)

Цель: получить стоимость продаж не более 6 ед. продукции в каждой торговой точке для последующего расчета размера скидки (от зачтенной суммы продажи)
Второе - просто, первое - сложно, потому что не могу разобраться, как получить часть стоимости, например, 1 ед. из 5 проданных ед., т.е. в торговой точке неск. сумм продаж по 5 ед. и нам нужно выделить из них как 5+1, определив совокупную стоимость, далее рассчитать размер заложенной скидки в 20%

Поскольку пол дня пытаюсь найти способ решения через сводную, не совсем уверен, ясно ли и однозначно я сформулировал свою задачу

Пример 01 - сама задача
Пример 02 - попробовал формулами приблизиться к решению

 
Получить максимальную дату из PivotCache (если в самой сводной таблице она не выведена), VBA
 
Коллеги, добрый день,

Ищу оптимальный способ получить в одну ячейку значение максимальной даты данных кеша сводной таблицы
Нигде не нашел, в т.ч. в англоязычных источниках
Обновить все Сводные таблицы кроме, VBA
 
Цитата
buchlotnik написал:
If PT.Name <>  "Сводная таблица7" then PT.RefreshTable
Результат не заставил себя ждать - обновился в 22 раза быстрее
Большое Вам спасибо!
Обновить все Сводные таблицы кроме, VBA
 
Коллеги, добрый день,

Помогите пож-та скорректировать код, таким образом, чтобы обновлялись данные во всех таблицах кроме таблицы 'Сводная таблица7' на листе 'Прогноз',
или кроме всего листа 'Прогноз'

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

или использую код:
Код
Sub RefreshAllPivotTables()
    t = Timer
Dim PT As PivotTable
Dim WS As Worksheet
    For Each WS In ThisWorkbook.Worksheets
        For Each PT In WS.PivotTables
          PT.RefreshTable
        Next PT
    Next WS
    MsgBox "???" & Chr(10) & "???:  " & TimeSerial(0, 0, (Timer - t)) & " ???.", vbInformation + vbMsgBoxSetForeground + vbSystemModal
End Sub

Перебор файлов в папке вне выбранного списка, VBA
 
Nordheim, давно пытаюсь понимать эти механики, что-то по смыслу понятно, что-то уже обсуждено или увидено, а к чему-то непонятно с какой стороны подходить... вот Вы меня и направили - большое спасибо!
Страницы: 1 2 3 4 След.
Наверх