Добрый день. вопрос такой. У меня есть несколько таблиц, на листе примерно 250 таблиц. Они одного размера, как во вложении. Сейчас я вручную просматриваю колонку "согласование", выбираю "согласовано" и копировать - вставить на соседний лист. Так каждую таблицу.
пример во вложении. "СВОД" - это то, что я делаю вручную. Может можно написать макрос, который бы это делал ? Была идея транспонировать таблицы, чтобы они шли друг за дружкой вниз. Но через функцию "транспонировать" конечно не вышло) Подскажите, как это автоматизировать ?
Добрый день. вопрос такой. У меня есть несколько таблиц, на листе примерно 250 таблиц. Они одного размера, как во вложении. Сейчас я вручную просматриваю колонку "согласование", выбираю "согласовано" и копировать - вставить на соседний лист. Так каждую таблицу.
пример во вложении. "СВОД" - это то, что я делаю вручную. Может можно написать макрос, который бы это делал ? Была идея транспонировать таблицы, чтобы они шли друг за дружкой вниз. Но через функцию "транспонировать" конечно не вышло) Подскажите, как это автоматизировать ?Nikonka89
Доброго дня. Вариант решения на Power Query. Пользоваться так: 0. удостоверяетесь что на вашей версии Экселя работает Power Query. 1. на лист1 вставляете ваши 250 табличек 2. сохраняете файл 3. Проверяете корректность адреса этого файла на листе Адрес 4. на листе Свод жмете по зеленой табличке правой кнопой мыши и выбираете обновить. 5. немного ждете и PROFIT [vba]
Код
let Source = Excel.Workbook( File.Contents( Excel.CurrentWorkbook(){[Name="адрес"]}[Content]{0}[Column1] ), null, true ), Лист1_Sheet = Source{[Item="Лист1",Kind="Sheet"]}[Data], RemoveEmptyColunms = Table.RemoveColumns( Лист1_Sheet, Table.SelectRows( Table.Buffer( Table.Profile( Лист1_Sheet ) ), each [NullCount] = [Count] )[Column] ), TransposedTable = Table.Transpose(RemoveEmptyColunms), PromotedHeaders = Table.PromoteHeaders(TransposedTable, [PromoteAllScalars=true]), SplitTable = Table.Split( PromotedHeaders, 5 ), TransformTables = List.Transform( SplitTable, each let Custom3 = Table.Buffer(_), RemovedColumns = Table.Transpose( Table.DemoteHeaders( Table.RemoveColumns(Custom3,{"Column1"}) ) ), AddedCustom = Table.AddColumn( Table.AddColumn( Table.PromoteHeaders( RemovedColumns ), "Номер", each List.RemoveNulls(Custom3[Column1]){0} ), "Сап", each List.RemoveNulls(Custom3[Column1]){1} ) in AddedCustom), CombineTables = Table.Combine( TransformTables ), LowercasedText = Table.TransformColumns(CombineTables,{{"Согласование", Text.Lower, type text}}), FilteredComments = Table.SelectRows(LowercasedText, each [Согласование] = "увеличиваем уа"), OrderedColumns = Table.SelectColumns(FilteredComments,{"Номер", "Сап", "Группа", "Текущий УА", "В 43", "Возможности роста (max)", "Комментарии", "Согласование"}) in OrderedColumns
[/vba]
Доброго дня. Вариант решения на Power Query. Пользоваться так: 0. удостоверяетесь что на вашей версии Экселя работает Power Query. 1. на лист1 вставляете ваши 250 табличек 2. сохраняете файл 3. Проверяете корректность адреса этого файла на листе Адрес 4. на листе Свод жмете по зеленой табличке правой кнопой мыши и выбираете обновить. 5. немного ждете и PROFIT [vba]
Код
let Source = Excel.Workbook( File.Contents( Excel.CurrentWorkbook(){[Name="адрес"]}[Content]{0}[Column1] ), null, true ), Лист1_Sheet = Source{[Item="Лист1",Kind="Sheet"]}[Data], RemoveEmptyColunms = Table.RemoveColumns( Лист1_Sheet, Table.SelectRows( Table.Buffer( Table.Profile( Лист1_Sheet ) ), each [NullCount] = [Count] )[Column] ), TransposedTable = Table.Transpose(RemoveEmptyColunms), PromotedHeaders = Table.PromoteHeaders(TransposedTable, [PromoteAllScalars=true]), SplitTable = Table.Split( PromotedHeaders, 5 ), TransformTables = List.Transform( SplitTable, each let Custom3 = Table.Buffer(_), RemovedColumns = Table.Transpose( Table.DemoteHeaders( Table.RemoveColumns(Custom3,{"Column1"}) ) ), AddedCustom = Table.AddColumn( Table.AddColumn( Table.PromoteHeaders( RemovedColumns ), "Номер", each List.RemoveNulls(Custom3[Column1]){0} ), "Сап", each List.RemoveNulls(Custom3[Column1]){1} ) in AddedCustom), CombineTables = Table.Combine( TransformTables ), LowercasedText = Table.TransformColumns(CombineTables,{{"Согласование", Text.Lower, type text}}), FilteredComments = Table.SelectRows(LowercasedText, each [Согласование] = "увеличиваем уа"), OrderedColumns = Table.SelectColumns(FilteredComments,{"Номер", "Сап", "Группа", "Текущий УА", "В 43", "Возможности роста (max)", "Комментарии", "Согласование"}) in OrderedColumns