Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перенос данных с спецификации в ведомость - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос данных с спецификации в ведомость (Макросы/Sub)
Перенос данных с спецификации в ведомость
4step Дата: Воскресенье, 22.05.2022, 09:34 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 0 ±
Замечаний: 40% ±

Добрый день! Имеется спецификация и необходимо перенести данные в ведомость с простановкой количества через "+", просуммировать, а также внести вхождение, обозначение, наименование и примечание. Можно ли с помощью PQ или VBA выполнить данную задачу?
Счёт суммы через вспомогательный столбец
Код
=ЕСЛИ([@Входит]=0;1;[@[Кол.1]]*СУММЕСЛИ([@Обозначение];[@Входит];[@Сумма1]))
К сообщению приложен файл: 0061856.xlsx (13.3 Kb)


Сообщение отредактировал 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 413
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Можно ли с помощью PQ
Можно
[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]
К сообщению приложен файл: 6436347.xlsx (22.8 Kb)
 
Ответить
Сообщение
Можно ли с помощью PQ
Можно
[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
Репутация: 0 ±
Замечаний: 40% ±

Можно

В вашем решении частично суммирует через "+", а в остальных почему то нет. Не могли бы посмотреть в чем причина? Я еще в своем примере добавил столбец "Раздел" и лишние строки удалил для наглядности.
К сообщению приложен файл: 5329511.xlsx (22.0 Kb)


Сообщение отредактировал 4step - Понедельник, 23.05.2022, 13:21
 
Ответить
Сообщение
Можно

В вашем решении частично суммирует через "+", а в остальных почему то нет. Не могли бы посмотреть в чем причина? Я еще в своем примере добавил столбец "Раздел" и лишние строки удалил для наглядности.

Автор - 4step
Дата добавления - 23.05.2022 в 13:21
msi2102 Дата: Понедельник, 23.05.2022, 16:25 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 413
Репутация: 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]
К сообщению приложен файл: 3969872.xlsx (21.8 Kb)


Сообщение отредактировал 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
Репутация: 0 ±
Замечаний: 40% ±

Исправил

Очень благодарен! Спасибо большое за труды!! =)
 
Ответить
Сообщение
Исправил

Очень благодарен! Спасибо большое за труды!! =)

Автор - 4step
Дата добавления - 24.05.2022 в 13:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос данных с спецификации в ведомость (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!