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

Страницы: 1
Регулярные выражения в PQ
 
Для добавления возможности работать с регулярными выражениями в PQ использовал статью https://www.planetaexcel.ru/techniques/7/13310/.
Хотел дополнительно реализовать удаление дубликатов внутри функции JS через конструкцию new Set
Код
var arr = [...new Set(x.match(pattern))];
var result = arr.join(delim);

но PQ выдал ошибку "Expression.Error: Элементов в перечислении было недостаточно".
Решил все таки задачу с помощью самого PQ, через Text.Combine(List.Distinct(Text.Split(...
Может кто-то сталкивался с подобной задачей и все таки есть решение через JS?

И еще вопрос, опять же с JS - есть ли возможность отсортировать вывод результатов поиска по рег. выражению по группам поиска, а не по очередности вхождения в исходную строку?  
Дело  в том, что код
Код
let fx=(txt as text, regex as text, delim as text) =>
    Web.Page(
        "<script>
            var x = '" & txt & "';
            var delim = '" & delim & "';
            var pattern = /" & regex & "/gm;
            var result = x.match(pattern).join(delim);
            if (x.match(pattern)!= null) {
                document.write(result);
                } else {
                document.write(null);
                }
                
         </script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}

in
fx

выдает найденные подстроки в том порядке, в котором они находятся в подстроке, а нужно что бы согласно условиям поиска, разделенных | в рег. выражении.
Изменено: Иван Ган - 10.03.2025 17:18:19
Powerquery: выборка по условию из нескольких столбцов, в том числе на соответствие критерию максимум/минимум
 
sotnikov, спасибо
Могли бы еще подсказать, как добавить еще одно условие на максимум по другой колонке -Rev, вместе с условием по дате Created?
Во вложении дополненный файл Книга1 (1).xlsx (24.01 КБ).
Изменено: Иван Ган - 27.01.2025 19:41:16
Powerquery: выборка по условию из нескольких столбцов, в том числе на соответствие критерию максимум/минимум
 
Здравствуйте!
Есть таблица, содержащая список файлов с полями "Имя", "Путь", "Дата создания", и др.
Названия файлов могут повторяться, но в разных папках и с разными датами создания.
Из этого списка нужно отобрать те строки в которых Дата модификации максимальна, но список должен содержать исходный набор полей.
Если делать с помощью группировки, то придется отсекать поле Путь, что бы найти максимум по полю "Дата создания", а мне нужно узнать где находится файл с последней датой создания.
Изменено: Иван Ган - 27.01.2025 15:54:57
Формирование запросов HTTP из Excel/VBA
 
Посмотрел в отладчике браузера, что html текст запроса включает ссылку на main.ab3aeb36.js.
А main.ab3aeb36.js включает в себя более 96000 строк кода, а кроме него есть файлы ts, tsx, папки с подпапками.

Текст url запроса:
Код
<!doctype
html>

<html
lang="en">

    <head>

        <meta charset="utf-8"/>

        <meta
http-equiv="X-UA-Compatible" content="IE=edge"/>

        <link rel="icon"
href="/favicon.ico"/>

        <meta name="viewport"
content="width=device-width,initial-scale=1"/>

        <meta name="theme-color"
content="#000000"/>

        <script nomodule>

            var DOMAIN_LOCAL =
".domainname.local"

              , UTM_SOURCE_REDIRECT_FROM_IE =
"utm_source=IE"

              , addSearchPath =
window.location.search ? window.location.search + "&" +
UTM_SOURCE_REDIRECT_FROM_IE : window.location.pathname + "?" +
UTM_SOURCE_REDIRECT_FROM_IE

              , addDomain = -1 !==
window.location.href.indexOf(DOMAIN_LOCAL) ? "" : DOMAIN_LOCAL

              ,
redirectToEdge = "microsoft-edge:https://" + window.location.host +
addDomain + addSearchPath

              ,
approve = confirm("Поиск по НСИ больше не доступен в Internet Explorer.
Открыть в Microsoft Edge?");

            approve
&& (window.location.href = redirectToEdge)

       
</script>

       
<title>Поиск по НСИ</title>

        <script
defer="defer"
src="/static/js/main.ab3aeb36.js"></script>

        <link
href="/static/css/main.99ac92e2.css" rel="stylesheet">

    </head>

    <body>

       
<noscript>You need to enable JavaScript to run this
app.</noscript>

        <div
id="root"></div>

    </body>

</html>

Формирование запросов HTTP из Excel/VBA
 
Строка url выглядит так
https://esm.адрессервера.local/?h=5y2Z6B

где 5y2Z6B каждый раз разные, я так понял это идентификатор запроса
Формирование запросов HTTP из Excel/VBA
 
В корпоративной сети есть сервис поиска материалов через web/https.
Я ввожу наименование материалы и сервис выдает список наиболее подходящих МТР, в виде таблицы.
Возможно ли из excel/vba формировать запросы к этому сервису и обрабатывать полученные результаты?
Обработка полученных результатов и выбор наиболее подходящего из найденных - это другой вопрос.
Какие условия для этого необходимы, например поддержка HHTP API и др?
Дело в том, что список позиций/наименований которым нужно подобрать из НСИ исчисляется тысячами, и в ручную это оооочень долго.
Поиск позиции в массиве по двум и более условиям (вхождение подстроки)
 
Павел \Ʌ/, превосходно (excel!)!
Спасибо!
Отображение итогового столбца по строкам в нужной позиции сводной таблицы
 
Подскажите, возможно ли отобразить в сводной таблице итоговый столбец  по строкам не последним, а например четвертым п счёту.
В таблице во вложении общий итог - крайний правый столбец, а нужен в позиции выделенной желтым.
Изменено: Иван Ган - 28.09.2023 09:23:35
Поиск позиции в массиве по двум и более условиям (вхождение подстроки)
 
Sanja, в правой таблице в строках 1 и 2, в  колонке Индекс = #N/A, т.е. не найдено, в третьей строке найдено значение по условию, в четвертой найдено, но по одному условию - вхождение подстроки.

Вопрос был в следующем - возможно ли использовать связку формул Индекс-Поискпоз с двумя условиями и более, причем условиями проверки не только на точное совпадение, но и на вхождения подстроки в просматриваемом массиве строк?

В строке 4 правой таблицы работает связка Индекс-Поискпоз, как раз с условием на вхождение подстроки в массиве строк левой таблицы (колонка Наименование), но только с одним критерием поиска.
Изменено: Иван Ган - 28.09.2023 07:24:27
Поиск позиции в массиве по двум и более условиям (вхождение подстроки)
 
Есть таблица Таблица16
Формула подсчёта количества строк по двум условиям даёт результат = 1
=СЧЁТЕСЛИМН(Таблица16[Наименование];"*"&СЖПРОБЕЛЫ([@Наименование])&"*";Таблица16[Дата регистрации];[@[Дата регистрации]])

жирным выделено условие проверки вхождения искомой подстроки в поле [Наименование]

Возможно ли найти позицию этой строки в таблице Таблица16, где одно из условий - вхождение нужной подстроки?
Вариант использования функций ВПР и ИНДЕКС, в случае с двумя условиями, проверяет только точное совпадение с искомой строкой:
=ИНДЕКС(Таблица16[Состояние];ПОИСКПОЗ(1;(Таблица16[Наименование]=СЖПРОБЕЛЫ([@Наименование]))*(Таблица16[Дата регистрации]=[@[Дата регистрации]]);0))

Во вложении пример, в итоговой таблице при точном совпадении Наименования связка Индекс+ПоискПоз  отрабатывает, как надо.  
Реализация функции МаксЕслиМн и СумЕслиМн в вычисляемом столюце с помощью PowerQuery
 
Здравствуйте!
Подскажите, как реализовать вычисление максимального  значения с дополнительным условием по другому полю (столбцу) в PowerQuery и суммирование по условию? В TSQL это делал, а вот здесь затруднения.

Пример исходной таблицы и нужной во вложении Книга2.xlsx (32.04 КБ)
Частичное транспонирование таблицы с помощью PowerQuery
 
Здравствуйте!
Возможно ли частично транспонировать таблицу, т.е. преобразовать значения в столбцах в значения строки, причем значения некоторых левые столбцов исходной таблицы оставить без изменений?
Количество транспонируемых столбцов в строки переменная величина.

Пример во вложении (Книга2). Синяя таблица - исходная, в которой колонки с датами содержат значения, преобразуемые в строки, колонка "Тип значения" содержит названия добавляемых колонок в новой таблице. Желтая - транспонированная таблица.
Подсчёт количества строк, разница между значениями колонок которых удовлетворяет условию
 
Ігор Гончаренко, спасибо, что написали своё решение и формулу, БМВ, за то, что показали направление.

Очень хорошая статья по этой теме
https://www.planetaexcel.ru/techniques/2/2609/

Задачу свою решил следующей формулой+массив (сложил количество просрочек по началу и окончанию и вычел количество строк с одновременным срывом начала и окончания):
Код
=СУММПРОИЗВ(--((A2=Таблица1[Шифр])*(ЕСЛИ(ЕПУСТО(Таблица1[ФактНачало]);СЕГОДНЯ();Таблица1[ФактНачало])>Таблица1[Начало])))+СУММПРОИЗВ(--((A2=Таблица1[Шифр])*(ЕСЛИ(ЕПУСТО(Таблица1[ФактОкончание]);СЕГОДНЯ();Таблица1[ФактОкончание])>Таблица1[Окончание])))-СУММПРОИЗВ(1*(A2=Таблица1[Шифр])*(ЕСЛИ(ЕПУСТО(Таблица1[ФактНачало]);СЕГОДНЯ();Таблица1[ФактНачало])>Таблица1[Начало])*(ЕСЛИ(ЕПУСТО(Таблица1[ФактОкончание]);СЕГОДНЯ();Таблица1[ФактОкончание])>Таблица1[Окончание]))
Изменено: Иван Ган - 28.09.2022 13:48:23
Подсчёт количества строк, разница между значениями колонок которых удовлетворяет условию
 
Цитата
написал:
описанная выше задача просрочена?
Да, такая строка тоже должна быть в статистике просрочки.

Ігор Гончаренко, Ваша формула считает только те строки, для которых заполнена ФактДата (без учёта пустых).

Добавил колонки начало и окончание, в них подсчитывается количество просроченных строк по началу и окончанию отдельно.
Но как посчитать общее количество просроченных не понимаю, простое сложение значений Начало и Окончание даст не верный результат, так как если в строке просрочено и Начало и Окончание, то строка должна считаться как 1.

В любом случае БМВ, Ігор Гончаренко, спасибо за подсказки.
Подсчёт количества строк, разница между значениями колонок которых удовлетворяет условию
 
Подготовил пример с данными. Подсчёт ведется с помощью промежуточных столбцов Н-Н, О-О, Просрочено.
Если Факт больше чем плановая дата, то работа считается просроченной (Н-Н, О-О - факт минус план).
Если начало или окончание просрочено,  то строка считается просроченной, если просрочено и начало и окончание, то просрочка считается один раз.

Возможно ли сделать такой подсчет без создания промежуточных столбцов Н-Н, О-О, Просрочка?
Изменено: Иван Ган - 28.09.2022 09:52:22
Подсчёт количества строк, разница между значениями колонок которых удовлетворяет условию
 
Есть таблица в которой строки - это активности (работы), колонки - название работы, плановая дата начала, окончания, фактическая дата начала, окончания.
Нужно подсчитать количество строк для которых работа просрочена, т.е. колонка план. дата начала < чем факт. дата начала и аналогично с датой окончания.
СЧЁТЕСЛИМН, как я понял не умеет сравнивать разность колонок, например следующая запись будет не верной (выделено)
=СЧЁТЕСЛИМН(Данные!B:B;[@Шифр];Данные!D:D;"<>";Данные!L:L-Данные!F:F;"<1")

Возможно ли как то реализовать формулу подсчёта без использования VBA и создания промежуточных столбцов в исходной таблице, для подсчёта разности между сравниваемыми столбцами?
Power query: Таблица содержит ошибки переполнения, При запуске запроса выводится ошибка переполнения
 
Здравствуйте!
Подскажите, в чём может быть причина возникновения ошибки и как её локализовать?


Тип всех данных поставил "any".
Создал отдельный лист с данными, оставив только минимальный набор колонок (10 столбцов)
В итоге запрос сработал без ошибок.

Не рабочий запрос:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="СтатусПоставки"]}[Content],
    #"Повышенные заголовки" = Table.PromoteHeaders(Источник, [PromoteAllScalars=true]),
    #"Измененный тип" = Table.TransformColumnTypes(#"Повышенные заголовки",{
        {"Пп", type any}, 
   {"ОР", type any}, 
   {"Производство", type any}, 
   {"Наименование проекта", type any}, 
   {"СПП-элемент", type any}, 
   {"Комплектовщик", type any}, 
   {"Куратор", type any}, 
   {"КСП", type any}, 
   {"Часть проекта", type any}, 
   {"Материал", type any}, 
   {"Наименование материала по РВ", type any}, 
   {"Наименование материала в заявке", type any}, 
   {"Наименование ТМЦ", type any}, 
   {"Ед. изм.", type any}, 
   {"Кол-во к закупу", type any}, 
   {"Закупщик", type any}, 
   {"Стоимость", type any}, 
   {"Заявка", type any}, 
   {"Источник", type any}, 
   {"Срок начала реализации проекта", type any}, 
   {"Срок окончания реализации проекта", type any}, 
   {"Дата создания Заявки", type any}, 
   {"Дата Поставки По Заявке", type any}, 
   {"Статус поставки", type any}, 
   {"Статус корректный", type any}, 
   {"Дата статуса", type any}, 
   {"Номер контракта", type any}, 
   {"Дата Поставки Из договора", type any}, 
   {"Прогнозная дата поставки", type any}, 
   {"Договор подряда", type any}, 
   {"Дата оприходования на склад", type any}, 
   {"Учитывать", type any}, 
   {"Прогнозный срок перемещения на подрядчика ", type any}, 
   {"Перемещение на склад подрядчика", type any}, 
   {"Процент выполнения поставки", type any}, 
   {"Не вовлеченные ТМЦ", type any}, 
   {"Стоимость НВИ", type any}, 
   {"Причина возникновения НВИ", type any}, 
   {"Комментарий Планирование", type any}, 
   {"Комментарий Закупщика ", type any}, 
   {"Наличие риска", type any}})
in
    #"Измененный тип"
Изменено: Иван Ган - 16.09.2022 07:19:42
Группировка данных, условие на функцию-агрегатор (аналог СУММЕСЛИМН(), подсчёт уникальных значений в рамках группировки), Условие на группировку и вычисляемое поле
 
Юрий М, ошибочно вас процитировал. Может просто удалить последние сообщения, а я учту информацию в дальнейшем. Спасибо.  
Группировка данных, условие на функцию-агрегатор (аналог СУММЕСЛИМН(), подсчёт уникальных значений в рамках группировки), Условие на группировку и вычисляемое поле
 
Цитата
написал:
Иван Ганюшкин,  предложите новое название темы, из которого будет понятна  задача  - модераторы поменяют.
Neostt,  прошу Вас не отвечать в темах с подобными названия. Или тут же предлагать свой вариант названия.
Предлагаю новое название темы "Группировка данных, условие на функцию-агрегатор (аналог СУММЕСЛИМН(), подсчёт уникальных значений в рамках группировки)" и прошу модераторов изменить его.
Группировка данных, условие на функцию-агрегатор (аналог СУММЕСЛИМН(), подсчёт уникальных значений в рамках группировки), Условие на группировку и вычисляемое поле
 
Спасибо!

Если не затруднит, могли бы подсказать, как реализуется превращение таблицы исходных данных в результат, с помощью power query (приложил файл Пример.xlsx (14.07 КБ))

Делал подобные вещи на T-SQL, используя вложенные запросы + хранимые процедуры, но было давно, код не вспомню как написать, да и СУБД нет что бы отладить. В экселе указал формулы подсчёта, кроме поля "Количество заявок", для него в ручную считал.

Тяжеловато как то стало новое осваивать...

Изменено: Иван Ган - 09.09.2022 13:04:42
Группировка данных, условие на функцию-агрегатор (аналог СУММЕСЛИМН(), подсчёт уникальных значений в рамках группировки), Условие на группировку и вычисляемое поле
 
Здравствуйте!

Может кто то сталкивался с такой задачей, как вычислить сразу несколько агрегатов, для каждого из которых разные условия [не]включения одной и той же записи исходного набора. Например, вычисление количества чисел больше и меньше 10 — отдельными полями.

В случай SQL, код, например,  может быть таким:
Код
Код для PostgreSQL
SELECT
  count(*) FILTER(WHERE prime < 10) countlt
, count(*) FILTER(WHERE prime > 10) countgt
FROM
  unnest('{2,3,5,7,11,13,17,19}'::integer[]) prime;

Как подобное реализуется в Power query + excel?

Изменено: Юрий М - 09.09.2022 14:13:43
Страницы: 1
Наверх