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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 22 След.
Выполнить код после обновления запросов PQ
 
Создать новую тему?
Ранее при простом обновлении, через планировщик все работало, но была одна строчка "oc.Refresh", тупо обновить все.
Прочитал статью Дмитрия, почитал про свойства объекта "oc.OLEDBConnection.BackgroundQuery", не совсем конечно разобрался, но думаю, что не коннект происходит в строчках:
Код
'запоминаем значение обновления в фоне для запроса        
IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
'выставляем принудительно ждать завершения запроса
oc.OLEDBConnection.BackgroundQuery = False
Изменено: adamm - 3 Июл 2020 09:54:27
Выполнить код после обновления запросов PQ
 
да файл открывается, но сразу выпадает ошибка
Выполнить код после обновления запросов PQ
 
Всем привет!
В продолжение темы, решил загнать данный файл, с кодом от Дмитрия, в планировщик задач начала выпадать ошибка, то есть запускаю в ручном режиме все работает, через планировщик не хочет, в чем может быть проблема?
Выполнить код после обновления запросов PQ
 
Да согласен тему стоило назвать немного по другому, например "выполнить код после обновления запросов PQ", да и прошу прощения, за несвоевременный ответ. Всем спасибо!
Цитата
Андрей VG написал:
Мне так кажется, что такая манера постановки вопросов уже не излечима.
Работаю над собой, не оправдываюсь, но честно на работе голова почти всегда квадратная
Цитата
Дмитрий(The_Prist) Щербаков написал:
В этой статье есть практически готовый код
Обязательно почитаю! Спасибо!
Все получилось!
Изменено: adamm - 25 Июн 2020 12:48:30
Выполнить код после обновления запросов PQ
 
Всем привет!
Есть макрос, который запускает сначала обновление запросов в PQ, а потом делает рассылку на почту, но вот проблема в том что обновление не успевает выполниться или возможно нужно сохранить файл перед рассылкой
Код
Private Sub Workbook_Open()
' При открытии книги на листе Лог прописывается ФИО пользователя
    Worksheets("Лог").Cells(lastrow + 2, 5) = Environ("USERNAME")
    
 'Макрос вставляет формулу и тем самым дает активную ячейку, для проверки условия, макроса на листе Лог
    Sheets("Лог").Select
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""PupkinVasia"",TRUE,FALSE)"
    
End Sub

Далее лист лог, на нем если условия выполнены, то срабатывают обновление и рассылка
Код
' Проверка если F2=ИСТИНА,выполняются макросы, сам макрос срабатывает от активизации макросом в модуле ЭтаКнига
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("F2")) Is Nothing Then
   If Target = True Then
     
    'Запускаем макрос обновления
    Call Обновление
    'Запускаем макрос рассылки
    If Format(Now, "hh:mm") > "21:00" Then Рассылка
    
   End If
 End If
End Sub
Код
Sub Обновление()

        ActiveWorkbook.RefreshAll
   
End Sub

Код
Sub Рассылка()

Dim objOutlookApp As Object, objMail As Object
    Dim lr As Long, lLastR As Long

    Application.ScreenUpdating = False
    On Error Resume Next
    Set objOutlookApp = CreateObject("Outlook.Application")
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    objOutlookApp.Session.Logon

    lLastR = Cells(Rows.Count, 1).End(xlUp).Row 'определяем последнюю заполненную ячейку в столбце А
    'цикл от второй строки(начало данных с адресами) до последней ячейки таблицы
    For lr = 2 To lLastR
        Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
        'создаем сообщение
        With objMail
            .To = Cells(lr, 1).Value 'адрес получателя
            .Subject = Cells(lr, 2).Value 'тема сообщения
            .Body = Cells(lr, 3).Value 'текст сообщения
            .Attachments.Add Cells(lr, 4).Value
            .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
        End With
    Next lr

    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub
Группировка значений с дополнительным условию в PQ
 
Всем спасибо, за разъяснения, PooHkrd, возможно упустил обязательно почитаю! Ошибся статью читал, но на момент прочтения многое хоть и понятно, но без практики не закрепишь, шаг за шагом двигаемся вперед)
Изменено: adamm - 17 Июн 2020 09:58:36
Группировка значений с дополнительным условию в PQ
 
Михаил спасибо! Вот только как понять, что столбец количество нужно показать после списка, в справочнике об этом ни слова. То есть как понять, что вот эта связка дает список:
Код
each (Table.SelectRows(_, each [#"Вид работ"]="Манипуляция")[Количество])

List.Sum(list as list, optional precision as nullable number) as any
Возвращает сумму всех значений в списке list, отличных от NULL. Возвращает значение NULL, если в списке нет значений, отличных от NULL.

Или это просто нужно знать)
Изменено: adamm - 17 Июн 2020 08:26:21
Группировка значений с дополнительным условию в PQ
 
Всем привет!
Не стал опять же плодить новую тему, так как вопрос, "все вокруг да около", да и вообще с группировкой в PQ можно создавать отдельную ветку, ну это так к слову. Суть вопроса сгруппирорвать стоки получив сумму при условии, в примере выложил со счетом количества строк, но мне нужно сосчитать сумму, а не количество строк, вот ни как не додумаю как прописать "List.Sum".
Группировка с подстановкой значений в PQ
 
PooHkrd,ок, понял
Группировка с подстановкой значений в PQ
 
PooHkrd,заменил на b=a{1}? убрал try и otherwise null
Код
let Source = Table.AddIndexColumn(Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],"id"),    Group = Table.Group(Source, {"КоординатаНЭ"},{{"a", each let a=_,b=a{1} in Table.AddColumn
    (a, "b", each if Text.Contains([#"№шва"],"F") then if b[#"Spool-ID"]="" then b[Element]
    else b[#"Spool-ID"] else null)}}),
    Custom1 = Table.RemoveColumns(Table.Sort(Table.Combine(Group[a]),{"id",0}),{"id"})
in  Custom1
Ошибка не уходит, "не может применить доступ к полям в типе null"
Группировка с подстановкой значений в PQ
 
Спасибо стало понятней!
Группировка с подстановкой значений в PQ
 
Михаил Л, спасибо! Извините, что сразу не ответил. Можете пояснить?
1. В первой строчке, по мимо источника, вы добавили новый столбец id, но не указали первую цифру 0 или 1, то есть как понимаю, по умолчанию, если не указать, будет от 0
2. С группировкой не совсем понял, "a_" это вся таблица, "b" новый столбец с условием if, тут же не понимаю синтаксис "try" и "otherwise", гугл сообщил "пытаться" и "в противном случае", то есть в if можно добавить 3 результат?
3. В последней строчке разворачиваем столбцы и сортируем, но вот с Table.Combine не понял, ведь по сути можно было просто развернуть столбцы?
4. Так же не понимаю выражение each, гугл пишет:
"Ключевое слово each используется для удобного создания простых функций. "each ..." — это синтаксический сахар для сигнатуры функции, которая принимает параметр "(_) => ..."."
Группировка с подстановкой значений в PQ
 
Таким образом пытался применить if, последняя строка
Код
let     
Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],     
#"Объединенные запросы" = Table.NestedJoin(Источник,{"КоординатаНЭ"},Источник,{"КоординатаНЭ"},"Удаленные столбцы",JoinKind.LeftOuter),     
#"Развернутый элемент Удаленные столбцы" = #!"Table.ExpandTableColumn(#"Объединенные запросы",      
each if [#"Spool-ID"]<> null then "Удаленные столбцы", {"Spool-ID"}, {"Spool-ID.1"}) else ("Удаленные столбцы", {"Element"}, {"Element"}))" 
in    
#"Развернутый элемент Удаленные столбцы"  

Решение вроде как нашёл, но слишком мне кажется заморочено

Ошибся в данном случа он собирает все значения с обоих столбцов, а необходимо, только в случае если "Spool-ID" пустой(

Код
let    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],    
#"Объединенные запросы" = Table.NestedJoin(Источник,{"КоординатаНЭ"},Источник,{"КоординатаНЭ"},"Удаленные столбцы",JoinKind.LeftOuter),    
#"Развернутый элемент Удаленные столбцы" = Table.ExpandTableColumn(#"Объединенные запросы", "Удаленные столбцы", {"Spool-ID"}, {"Spool-ID.1"}),    
#"Развернутый элемент Удаленные столбцы2" = Table.ExpandTableColumn(#"Объединенные запросы", "Удаленные столбцы", {"Element"}, {"Spool-ID.1"}),    
#"Добавленный запрос" = Table.Combine({#"Развернутый элемент Удаленные столбцы", #"Развернутый элемент Удаленные столбцы2"}),    
#"Строки с примененным фильтром" = Table.SelectRows(#"Добавленный запрос", each ([#"Spool-ID.1"] <> null and [#"Spool-ID.1"] <> "")),    
#"Удаленные дубликаты" = Table.Distinct(#"Строки с примененным фильтром", {"БЛОК", "Номер линии", "№шва", "Spool-ID.1"})
in    
#"Удаленные дубликаты"

Изменено: adamm - 8 Июн 2020 17:23:02
Группировка с подстановкой значений в PQ
 

Всем привет!

В таблице, "создать новый столбец" и вывести в него значения: при повторяющихся значениях в столбце "КоординатаНЭ" вывести значение из столбца "Spool-ID", но если значение столбца " Spool-ID" содержит "" тогда вывести значение из столбца Element. Но только в позициях где в столбце №шва содержится значение "F".

Решение почти нашёл, объединил запрос самим собой

Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Объединенные запросы" = Table.NestedJoin(Источник,{"КоординатаНЭ"},Источник,{"КоординатаНЭ"},"Удаленные столбцы",JoinKind.LeftOuter),
    #"Развернутый элемент Удаленные столбцы" = Table.ExpandTableColumn(#"Объединенные запросы", "Удаленные столбцы", {"Spool-ID"}, {"Spool-ID.1"})
in
    #"Развернутый элемент Удаленные столбцы"

Но вот ни как не могу применить условие, что если столбец "Spool-ID" пустой разворачивать (подставлять) нужно столбец (Element)

Изменено: adamm - 8 Июн 2020 16:21:20
Объединение запросов с условием в PQ
 
Андрей VG, да согласен, нужно было немного корректнее выложить пример, но решение нашёл, спасибо!
Объединение запросов с условием в PQ
 
Андрей Лящук, спасибо, но не совсем то, в результате объединения запросов,  все работает в стандартном режиме, то есть столбцы с условием:
Код
let
    Источник = Table.NestedJoin(Таблица1,{"Area", "Line-Ref", "Group", "Description"},
Таблица3,{"Area", "Line-Ref", "Group", "Description"},"Таблица3",JoinKind.LeftOuter)
in
    Источник
 , но в случае если в столбце "Group" содержится "Монтаж арматуры" тогда добавляем в условие столбец "ZizeBore" и должны получить:
Код
let
    Источник = Table.NestedJoin(Таблица1,{"Area", "Line-Ref", "Group", "Description", "SizeBore1"},
Таблица3,{"Area", "Line-Ref", "Group", "Description", "SizeBore1"},"Таблица3",JoinKind.LeftOuter)
in
    Источник
Мне в голову приходит только вариант с "if" и "Text.Contains", но это топорно, думаю можно решить и покороче
Объединение запросов с условием в PQ
 
Всем привет!
Нужно объединить два запроса, но есть маленькая сложность, в столбце "SizeBore1" , нужно учитывать значение (то есть использовать данный столбец для сведения) только в том случае если в столбце "Group" содержится текст "Монтаж арматуры".
Предположил, что смогу использовать "Text.Contains", но что то пошло не так.
Код
let
    Источник = Table.NestedJoin(Таблица1,{"Area", "Line-Ref", "Group", "Description", 
each if Text.Contains([Group], "Монтаж арматуры") 
then [SizeBore1] 
else 0,Replacer.ReplaceValue,{"Group"}},Таблица3,{"Area", "Line-Ref", "Group", "Description",
each if Text.Contains([Group], "Монтаж арматуры") 
then [SizeBore1] 
else 0,Replacer.ReplaceValue,{"Group"} 
},"Таблица3",JoinKind.LeftOuter)
in
    Источник
Нужен аналог функции СчетЕсли в Power Query
 
Михаил Л,спасибо буду разбираться!
Сгруппировать данные согласно заболеваемости по городам и годам
 
annmadman, объясните, как группировать столбцы класс..., энтропия, ср тмп...? С остальными как понимаю вам нужна сумма?
если нужна сумма, вот варианты через консолидацию и PQ
Нужен аналог функции СчетЕсли в Power Query
 
Всем привет!
Опять возвращаюсь к данной теме, вопрос однотипный.
Хочу сосчитать значения, при условии даты, только за последние 30 дней, группировка выдает список с ошибками, что я не так делаю?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Append1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Column1", type text}, {"Атрибут", type datetime}, {"Значение", Int64.Type}}),
#"Сгруппированные строки" = Table.Group(#"Измененный тип", {"Column1", "Атрибут"}, 
{{"Количество", each {[Атрибут]>DateTime.Date(Date.AddDays(DateTime.LocalNow(),-30)),List.Sum([Значение]), type number}}})
in


   #"Сгруппированные строки"
Нужен аналог функции СчетЕсли в Power Query
 
PooHkrd,а точно) спасибо!
Нужен аналог функции СчетЕсли в Power Query
 
Всем привет!
В продолжении темы. Ни как не пойму почему в данном коде считает значения:
Код
= Table.Group(Источник, {"Объект", "Source.Name","Column1","Column2"}, 
{"Номер сварного шва", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва"]<>null))}
)
А когда добавляю ещё один столбец, выдает ошибку:
Код
= Table.Group(Источник, {"Объект", "Source.Name","Column1","Column2"}, 
{"Номер сварного шва", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва"]<>null))},
{"Номер сварного шва.1", each Table.RowCount(Table.SelectRows(_, each [#"Номер сварного шва.1"]<>null))}
)
Ведь по сути я добавил ещё одно условие, для подсчета ещё одного столбца?
Создать копию строки в таблице при условии, PQ
 
Михаил Л, Андрей Лящук, огромное спасибо!
Создать копию строки в таблице при условии, PQ
 
Михаил Л, оказывается в PQ в функции "разделить столбец по разделителю", есть вот такая примочка "по строкам", супер спасибо!
Только заметил, а вот второй столбец не получилось разделить
Изменено: adamm - 6 Май 2020 15:46:08
Создать копию строки в таблице при условии, PQ
 
Всем привет!
Есть таблица, в столбце "№ клейма сварщика" при наличии знака "/" необходимо добавить копию строки в эту же таблицу, но в столбцах "№ клейма сварщика" и "Способ сварки" оставить значения, аналогично последовательности до "/" и после "/", решение конечно есть, в файле примере, но это тупое мышкоклацанье, думаю можно сократить код
Power Query Быстрая замена по справочнику
 
Михаил Л, PooHkrd, спасибо большущее!
Power Query Быстрая замена по справочнику
 
Михаил Л, спасибо, можете уточнить по коду
Код
let Source = Excel.CurrentWorkbook(){[Name="Исходник"]}[Content], \\ обратились к исходнику
    a=List.Buffer(List.Zip(Table.ToColumns(Excel.CurrentWorkbook(){[Name="RUS"]}[Content]))) \\ сформировали список из списков АA, СC и тд.
    in Table.TransformColumns(Source, {{"№линии", each let a=a, b=Text.ToList(_) \\ обратились к исходнику к столбцу №линии, вот тут я не понял, как мы заменили значения  
in 
    Text.Combine(List.Transform(b,each List.ReplaceMatchingItems({_},a){0}))}})\\ тут мы склеиваем b и заменённое новое a, но тут ступар вот с этим {_}, читал выше что это перебор значений
Power Query Быстрая замена по справочнику
 
Всем привет!
Не стал создавать новую тему, по сути вопрос у меня такой же, нужно заменить значения из списка, но проблема в том, что нужно заменить не ячейку целиком, а только некоторые символы, суть в том, что есть некоторые "рукожопы", которым лень изменить раскладку на клавиатуре и они как попало вводят данные. Решение нашёл на vba, но нужно в PQ
Ошибка "Сбой инициализации источника данных"
 
В итоге все перепробовал, оставил на полседок установку SQL Server 2016 PowerPivot, по совету Андрей VG и все заработало!
Ошибка "Сбой инициализации источника данных"
 
PooHkrd, спасибо, но оба варианта пробовал
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 22 След.
Наверх