Добрый вечер. Уважаемые знатоки PQ, столкнулся с задачей, можно ли в PQ заполнить строку значениями из другой строки. Есть таблица "безобразная", но что имеем то имеем, мне необходимо в запросе прежде чем повысить заголовки таблицы, заполнить пустые строки значениями из предыдущей строки, что бы в дальнейшем получить верное название столбца. Возможно ли такое реализовать в PQ ? Всем спасибо за помощь.
New, у меня тоже не получается открыть Вашим кодом, выходит Debug. Андрей VG,Спасибо. Андрей ткните пжл. невидящего меня где была ошибка в моем коде? Глаза стер, но разницу вижу только в написании сохраненного формата у Вас числовой код, у меня просто имя формата. Спасибо
New,именно этот пример показанный Николаем и пытаюсь реализовать. Просто хочется уйти от того, что надо сначала открыть в Word, потом сохранить и только потом уже сделать запрос. Все дело в пользователях, которые будут в дальнейшем работать, с этим файлом, хочется все упростить до нажатия пару клавиш.
Друзья, здравствуйте. Битый час уже пытаюсь решить вроде бы одну простую задачку. Надо через Excel открыть PDF файл через Word и сохранить его в формате (.mht).Код написал, он сохраняет, но при открытии файла вместо данных я получаю абракадабру. Как исправить, в дальнейшем планирую, через PQ вытягивать данные с таблиц.
Добрый вечер. Efremov4D, всё дело в операторе неявного пересечения @ , если Вы его удалите с вашей первой формулы перед функцией ЕСЛИ(), Ваша формула так же заработает. Смотрите файл. Могу предположить, что изначально свою формулы Вы начали составлять в более старой версии Excel, затем открыли в О365 и программа Вам показала где у Вас было неявное пересечение, из за этого у вас вместо массива возвращался один элемент.
Изменено: Aleksey1107 - 16.01.2021 22:53:43(загрузка файла, не прошло с первого раза)
Siriusave, добрый вечер. В ваших исходных данных я обнаружил не состыковки, отметил Вам красной заливкой ибо я не верно понял, почему у Вас к примеру срок 12 месяцев, а дата завершения наступает позже. Ну да ладно, вообще, что то мышкой быстренько наклацал в PQ, сразу скажу есть вариант решения Вашей задачи гораздо короче. Код получился вот таким вот =))
Код
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
#"Удаленные столбцы" = Table.RemoveColumns(Источник,{"Плановый ежемесячный платеж"}),
#"Измененный тип" = Table.TransformColumnTypes(#"Удаленные столбцы",{{"Дата начала", type date}, {"Дата авершения", type date}, {"Срок (месяцев)", type number}, {"Сумма", type number}}),
#"Вычитание вставленных дат" = Table.AddColumn(#"Измененный тип", "Вычитание", each Duration.Days([Дата авершения] - [Дата начала]), Int64.Type),
#"Добавлен пользовательский объект" = Table.AddColumn(#"Вычитание вставленных дат", " в месяц", each [Сумма]/[#"Срок (месяцев)"]),
#"Сложено со столбцом" = Table.TransformColumns(#"Добавлен пользовательский объект", {{"Вычитание", each _ + 1, type number}}),
#"Добавлен пользовательский объект1" = Table.AddColumn(#"Сложено со столбцом", "список дат", each List.Dates([Дата начала],[Вычитание],
#duration(1,0,0,0))),
#"Добавлен индекс" = Table.AddIndexColumn(#"Добавлен пользовательский объект1", "Индекс", 1, 1, Int64.Type),
#"Объединенные столбцы" = Table.CombineColumns(Table.TransformColumnTypes(#"Добавлен индекс", {{"Индекс", type text}, {"Дата начала", type text}, {"Дата авершения", type text}}, "ru-RU"),{"Индекс", "Дата начала", "Дата авершения"},Combiner.CombineTextByDelimiter("-", QuoteStyle.None),"Интервал договора"),
#"Развернутый элемент список дат" = Table.ExpandListColumn(#"Объединенные столбцы", "список дат"),
#"Вставленное название месяца" = Table.AddColumn(#"Развернутый элемент список дат", "Название месяца", each Date.MonthName([список дат]), type text),
#"Вставлено: год" = Table.AddColumn(#"Вставленное название месяца", "Год", each Date.Year([список дат]), Int64.Type),
#"Объединенные столбцы1" = Table.CombineColumns(Table.TransformColumnTypes(#"Вставлено: год", {{"Год", type text}}, "ru-RU"),{"Название месяца", "Год"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Интервал платежа"),
#"Сгруппированные строки" = Table.Group(#"Объединенные столбцы1", {"Интервал договора", "Интервал платежа", " в месяц"}, {{"Количество", each Table.RowCount(_), Int64.Type}}),
#"Удаленные столбцы1" = Table.RemoveColumns(#"Сгруппированные строки",{"Количество"})
in
#"Удаленные столбцы1"
Доброй ночи ,Антон Черняев, очень странно, что Вам не помогает свойство "задать ширину столбца". Попробовал у себя, всё прекрасно сохраняет. Какая у Вас версия Excel? Может PQ давно не обновляли? При снятии галки, ставили перенос строки?
Вычисление разницы сумм в двух таблицах с учетом даты суммы и места возникновения, Вычисление разницы сумм в двух таблицах с учетом даты суммы и места возникновения
Добрый вечер.Юрий М, превосходно, 10 000 строк меньше, чем за 5 сек. Я тоже крутил-крутил эти массивы, но так и не докрутил, пока они мне не поддаются. Спасибо за решение.
Настя_Nastya, добрый вечер. Спасибо, я тоже про бывал циклом(забыл прописать в #1), Ваш вариант полностью рабочий, но есть одно но в исходных данных более 10 000 ячеек , цикл очень долго выполняется, в любом случае спасибо за уделенное время.
gling, здравствуйте это гениально более 10 000 ячеек меньше, чем за 5 секунд. А я целый день мучился, а оказалось, всё как всегда просто возьми да замени. Спасибо еще раз.
Добрый вечер. Помогите, уже все голову сломал, вроде задача простая, но уже перебрал кучу вариантов. Ни как не могу получить из текстовой строки, которая содержит дату + время, только дату заменив значения в исходном столбце. Решение необходимо именно макросом. На данном этапе макрос в файле превращает текст в дату с временем. Спасибо, все откликнувшимся.
New написал: вариант 2, но копируется без шапки таблицы
Нет, но отличие все же есть от моего в #7 С шапкой))
Код
Sub Макрос1()
Range("Таблица1[[#All],[Материал]],Таблица1[[#All],[Стоимость]]").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Добрый вечер! Уважаемые знатоки VBA направьте на путь истинный. Задача вроде простая найти все совпадения по дате в умной таблице, затем найденные значения занести в другую умную таблицу и если дата измениться, то что бы при обновлении данных таблица сначала очищалась, а затем уже добавлялись новые данные.
Вроде написал, но на начале цикла макрос спытыкается и что то мне кажется я как то не так это делаю, вроде понимаю что надо скорее всего через Find но туплю по страшному. Спасибо за любую наводку))
Код
Option Explicit
Dim ShList1 As Worksheet
Dim List1Obj As ListObject
Dim List1ListRow As ListRow
Dim ShList2 As Worksheet
Dim List1Obj2 As ListObject
Dim List1ListRow2 As ListRow
Sub Найти_строку_по_дате()
Dim Cell As Range
Set ShList1 = ThisWorkbook.Worksheets("Лист1")
Set List1Obj = ShList1.ListObjects("Таблица1")
Set ShList2 = ThisWorkbook.Worksheets("Лист2")
Set List1Obj2 = ShList2.ListObjects("Таблица2")
Set Cell = List1Obj2.ListColumns.Item(4).Range.Find(ThisWorkbook.Worksheets("Лист1").Cells(1, 5), LookAt:=xlWhole)
If Not Cell Is Nothing Then
List1Obj.Range.Clear
For Each Cell In List1Obj2.ListRows
Set List1ListRow = List1Obj.ListRows.Add
List1ListRow.Range(1) = Cell.Cells(1, -3)
List1ListRow.Range(2) = Cell.Cells(1, -2)
List1ListRow.Range(3) = Cell.Cells(1, -1)
Next Cell
End If
End Sub
как к формуле выходных дней прибавить праздничные дни ?, в моём рабочем графике есть строка определяющая выходные дни( 0) и рабочие (1) как в этой формуле прибавить значения праздничных дней ?