Перенос данных с спецификации в ведомость
4step
Дата: Воскресенье, 22.05.2022, 09:34 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Добрый день! Имеется спецификация и необходимо перенести данные в ведомость с простановкой количества через "+", просуммировать, а также внести вхождение, обозначение, наименование и примечание. Можно ли с помощью PQ или VBA выполнить данную задачу? Счёт суммы через вспомогательный столбецКод
=ЕСЛИ([@Входит]=0;1;[@[Кол.1]]*СУММЕСЛИ([@Обозначение];[@Входит];[@Сумма1]))
Добрый день! Имеется спецификация и необходимо перенести данные в ведомость с простановкой количества через "+", просуммировать, а также внести вхождение, обозначение, наименование и примечание. Можно ли с помощью PQ или VBA выполнить данную задачу? Счёт суммы через вспомогательный столбецКод
=ЕСЛИ([@Входит]=0;1;[@[Кол.1]]*СУММЕСЛИ([@Обозначение];[@Входит];[@Сумма1]))
4step
Сообщение отредактировал 4step - Понедельник, 23.05.2022, 05:59
Ответить
Сообщение Добрый день! Имеется спецификация и необходимо перенести данные в ведомость с простановкой количества через "+", просуммировать, а также внести вхождение, обозначение, наименование и примечание. Можно ли с помощью PQ или VBA выполнить данную задачу? Счёт суммы через вспомогательный столбецКод
=ЕСЛИ([@Входит]=0;1;[@[Кол.1]]*СУММЕСЛИ([@Обозначение];[@Входит];[@Сумма1]))
Автор - 4step Дата добавления - 22.05.2022 в 09:34
msi2102
Дата: Понедельник, 23.05.2022, 09:41 |
Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация:
129
±
Замечаний:
0% ±
Excel 2007
Можно [vba]Код
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Группа = Table.Group(Источник, {"Входит", "Обозначение", "Наименование"}, {{"Количество", each _, type table [Входит=text, Обозначение=text, Наименование=text, Ед. изм.1=text, Кол.1=number, Ед. изм.2=nullable text, Кол.2=nullable number, Примечание=nullable text]}}), ЕдИзм1 = Table.TransformColumns(Table.AddColumn(Группа, "Ед. изм.1", each Table.Column([Количество],"Ед. изм.1")), {"Ед. изм.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол1 = Table.TransformColumns(Table.AddColumn(ЕдИзм1, "Кол.1", each Table.Column([Количество],"Кол.1")), {"Кол.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "+"), type text}), ЕдИзм2 = Table.TransformColumns(Table.AddColumn(Кол1, "Ед. изм.2", each Table.Column([Количество],"Ед. изм.2")), {"Ед. изм.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол2 = Table.TransformColumns(Table.AddColumn(ЕдИзм2, "Кол.2", each Table.Column([Количество],"Кол.2")), {"Кол.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "+"), type text}), Прим = Table.TransformColumns(Table.AddColumn(Кол2, "Примечание", each Table.Column([Количество],"Примечание")), {"Примечание", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Сумма = Table.AggregateTableColumn(Прим, "Количество", {{"Кол.1", List.Sum, "Сумма1"}, {"Кол.2", List.Sum, "Сумма2"}}), Порядок = Table.ReorderColumns(Сумма,{"Входит", "Обозначение", "Наименование", "Ед. изм.1", "Кол.1", "Сумма1", "Ед. изм.2", "Кол.2", "Сумма2"}) in Порядок
[/vba]
Можно [vba]Код
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Группа = Table.Group(Источник, {"Входит", "Обозначение", "Наименование"}, {{"Количество", each _, type table [Входит=text, Обозначение=text, Наименование=text, Ед. изм.1=text, Кол.1=number, Ед. изм.2=nullable text, Кол.2=nullable number, Примечание=nullable text]}}), ЕдИзм1 = Table.TransformColumns(Table.AddColumn(Группа, "Ед. изм.1", each Table.Column([Количество],"Ед. изм.1")), {"Ед. изм.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол1 = Table.TransformColumns(Table.AddColumn(ЕдИзм1, "Кол.1", each Table.Column([Количество],"Кол.1")), {"Кол.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "+"), type text}), ЕдИзм2 = Table.TransformColumns(Table.AddColumn(Кол1, "Ед. изм.2", each Table.Column([Количество],"Ед. изм.2")), {"Ед. изм.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол2 = Table.TransformColumns(Table.AddColumn(ЕдИзм2, "Кол.2", each Table.Column([Количество],"Кол.2")), {"Кол.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "+"), type text}), Прим = Table.TransformColumns(Table.AddColumn(Кол2, "Примечание", each Table.Column([Количество],"Примечание")), {"Примечание", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Сумма = Table.AggregateTableColumn(Прим, "Количество", {{"Кол.1", List.Sum, "Сумма1"}, {"Кол.2", List.Sum, "Сумма2"}}), Порядок = Table.ReorderColumns(Сумма,{"Входит", "Обозначение", "Наименование", "Ед. изм.1", "Кол.1", "Сумма1", "Ед. изм.2", "Кол.2", "Сумма2"}) in Порядок
[/vba] msi2102
Ответить
Сообщение Можно [vba]Код
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Группа = Table.Group(Источник, {"Входит", "Обозначение", "Наименование"}, {{"Количество", each _, type table [Входит=text, Обозначение=text, Наименование=text, Ед. изм.1=text, Кол.1=number, Ед. изм.2=nullable text, Кол.2=nullable number, Примечание=nullable text]}}), ЕдИзм1 = Table.TransformColumns(Table.AddColumn(Группа, "Ед. изм.1", each Table.Column([Количество],"Ед. изм.1")), {"Ед. изм.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол1 = Table.TransformColumns(Table.AddColumn(ЕдИзм1, "Кол.1", each Table.Column([Количество],"Кол.1")), {"Кол.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "+"), type text}), ЕдИзм2 = Table.TransformColumns(Table.AddColumn(Кол1, "Ед. изм.2", each Table.Column([Количество],"Ед. изм.2")), {"Ед. изм.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол2 = Table.TransformColumns(Table.AddColumn(ЕдИзм2, "Кол.2", each Table.Column([Количество],"Кол.2")), {"Кол.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "+"), type text}), Прим = Table.TransformColumns(Table.AddColumn(Кол2, "Примечание", each Table.Column([Количество],"Примечание")), {"Примечание", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Сумма = Table.AggregateTableColumn(Прим, "Количество", {{"Кол.1", List.Sum, "Сумма1"}, {"Кол.2", List.Sum, "Сумма2"}}), Порядок = Table.ReorderColumns(Сумма,{"Входит", "Обозначение", "Наименование", "Ед. изм.1", "Кол.1", "Сумма1", "Ед. изм.2", "Кол.2", "Сумма2"}) in Порядок
[/vba] Автор - msi2102 Дата добавления - 23.05.2022 в 09:41
4step
Дата: Понедельник, 23.05.2022, 13:21 |
Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 85
В вашем решении частично суммирует через "+", а в остальных почему то нет. Не могли бы посмотреть в чем причина? Я еще в своем примере добавил столбец "Раздел" и лишние строки удалил для наглядности.
В вашем решении частично суммирует через "+", а в остальных почему то нет. Не могли бы посмотреть в чем причина? Я еще в своем примере добавил столбец "Раздел" и лишние строки удалил для наглядности.4step
Сообщение отредактировал 4step - Понедельник, 23.05.2022, 13:21
Ответить
Сообщение В вашем решении частично суммирует через "+", а в остальных почему то нет. Не могли бы посмотреть в чем причина? Я еще в своем примере добавил столбец "Раздел" и лишние строки удалил для наглядности.Автор - 4step Дата добавления - 23.05.2022 в 13:21
msi2102
Дата: Понедельник, 23.05.2022, 16:25 |
Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация:
129
±
Замечаний:
0% ±
Excel 2007
Исправил [vba]Код
let Источник = Excel.CurrentWorkbook(){[Name="Спецификация"]}[Content], Уд_нулл = Table.SelectRows(Источник, each ([Входит] <> null)), Группа = Table.Group(Уд_нулл, {"Входит", "РАЗДЕЛ", "Обозначение", "Наименование"}, {{"Количество", each _, type table [Входит=nullable text, РАЗДЕЛ=nullable text, Обозначение=text, Наименование=nullable text, Ед. изм.1=text, Кол.1=number, Сумма полн.1=number, Ед. изм.2=nullable text, Кол.2=nullable number, Сумма полн.2=number, Примечание=nullable text]}}), #"Ед. изм.1" = Table.TransformColumns(Table.AddColumn(Группа, "Ед. изм.1", each Table.Column([Количество],"Ед. изм.1")), {"Ед. изм.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол.1 = Table.TransformColumns(Table.AddColumn(#"Ед. изм.1", "Кол.1", each Table.Column([Количество],"Кол.1")), {"Кол.1", each Text.Combine(List.Transform(_, Text.From), "+"), type text}), #"Ед. изм.2" = Table.TransformColumns(Table.AddColumn(Кол.1, "Ед. изм.2", each Table.Column([Количество],"Ед. изм.2")), {"Ед. изм.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол.2 = Table.TransformColumns(Table.AddColumn(#"Ед. изм.2", "Кол.2", each Table.Column([Количество],"Кол.2")), {"Кол.2", each Text.Combine(List.Transform(_, Text.From), "+"), type text}), Примечание = Table.TransformColumns(Table.AddColumn(Кол.2, "Примечание", each Table.Column([Количество],"Примечание")), {"Примечание", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Сумма = Table.AggregateTableColumn(Примечание, "Количество", {{"Кол.1", List.Sum, "Сумма1"}, {"Кол.2", List.Sum, "Сумма2"}}), Порядок = Table.ReorderColumns(Сумма,{"Входит", "Обозначение", "Наименование", "Ед. изм.1", "Кол.1", "Сумма1", "Ед. изм.2", "Кол.2", "Сумма2"}) in Порядок
[/vba]
Исправил [vba]Код
let Источник = Excel.CurrentWorkbook(){[Name="Спецификация"]}[Content], Уд_нулл = Table.SelectRows(Источник, each ([Входит] <> null)), Группа = Table.Group(Уд_нулл, {"Входит", "РАЗДЕЛ", "Обозначение", "Наименование"}, {{"Количество", each _, type table [Входит=nullable text, РАЗДЕЛ=nullable text, Обозначение=text, Наименование=nullable text, Ед. изм.1=text, Кол.1=number, Сумма полн.1=number, Ед. изм.2=nullable text, Кол.2=nullable number, Сумма полн.2=number, Примечание=nullable text]}}), #"Ед. изм.1" = Table.TransformColumns(Table.AddColumn(Группа, "Ед. изм.1", each Table.Column([Количество],"Ед. изм.1")), {"Ед. изм.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол.1 = Table.TransformColumns(Table.AddColumn(#"Ед. изм.1", "Кол.1", each Table.Column([Количество],"Кол.1")), {"Кол.1", each Text.Combine(List.Transform(_, Text.From), "+"), type text}), #"Ед. изм.2" = Table.TransformColumns(Table.AddColumn(Кол.1, "Ед. изм.2", each Table.Column([Количество],"Ед. изм.2")), {"Ед. изм.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол.2 = Table.TransformColumns(Table.AddColumn(#"Ед. изм.2", "Кол.2", each Table.Column([Количество],"Кол.2")), {"Кол.2", each Text.Combine(List.Transform(_, Text.From), "+"), type text}), Примечание = Table.TransformColumns(Table.AddColumn(Кол.2, "Примечание", each Table.Column([Количество],"Примечание")), {"Примечание", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Сумма = Table.AggregateTableColumn(Примечание, "Количество", {{"Кол.1", List.Sum, "Сумма1"}, {"Кол.2", List.Sum, "Сумма2"}}), Порядок = Table.ReorderColumns(Сумма,{"Входит", "Обозначение", "Наименование", "Ед. изм.1", "Кол.1", "Сумма1", "Ед. изм.2", "Кол.2", "Сумма2"}) in Порядок
[/vba] msi2102
Сообщение отредактировал msi2102 - Понедельник, 23.05.2022, 16:26
Ответить
Сообщение Исправил [vba]Код
let Источник = Excel.CurrentWorkbook(){[Name="Спецификация"]}[Content], Уд_нулл = Table.SelectRows(Источник, each ([Входит] <> null)), Группа = Table.Group(Уд_нулл, {"Входит", "РАЗДЕЛ", "Обозначение", "Наименование"}, {{"Количество", each _, type table [Входит=nullable text, РАЗДЕЛ=nullable text, Обозначение=text, Наименование=nullable text, Ед. изм.1=text, Кол.1=number, Сумма полн.1=number, Ед. изм.2=nullable text, Кол.2=nullable number, Сумма полн.2=number, Примечание=nullable text]}}), #"Ед. изм.1" = Table.TransformColumns(Table.AddColumn(Группа, "Ед. изм.1", each Table.Column([Количество],"Ед. изм.1")), {"Ед. изм.1", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол.1 = Table.TransformColumns(Table.AddColumn(#"Ед. изм.1", "Кол.1", each Table.Column([Количество],"Кол.1")), {"Кол.1", each Text.Combine(List.Transform(_, Text.From), "+"), type text}), #"Ед. изм.2" = Table.TransformColumns(Table.AddColumn(Кол.1, "Ед. изм.2", each Table.Column([Количество],"Ед. изм.2")), {"Ед. изм.2", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Кол.2 = Table.TransformColumns(Table.AddColumn(#"Ед. изм.2", "Кол.2", each Table.Column([Количество],"Кол.2")), {"Кол.2", each Text.Combine(List.Transform(_, Text.From), "+"), type text}), Примечание = Table.TransformColumns(Table.AddColumn(Кол.2, "Примечание", each Table.Column([Количество],"Примечание")), {"Примечание", each Text.Combine(List.Transform(List.Distinct(_), Text.From), "; "), type text}), Сумма = Table.AggregateTableColumn(Примечание, "Количество", {{"Кол.1", List.Sum, "Сумма1"}, {"Кол.2", List.Sum, "Сумма2"}}), Порядок = Table.ReorderColumns(Сумма,{"Входит", "Обозначение", "Наименование", "Ед. изм.1", "Кол.1", "Сумма1", "Ед. изм.2", "Кол.2", "Сумма2"}) in Порядок
[/vba] Автор - msi2102 Дата добавления - 23.05.2022 в 16:25
4step
Дата: Вторник, 24.05.2022, 13:21 |
Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Очень благодарен! Спасибо большое за труды!! =)
Очень благодарен! Спасибо большое за труды!! =)4step
Ответить
Сообщение Очень благодарен! Спасибо большое за труды!! =)Автор - 4step Дата добавления - 24.05.2022 в 13:21