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

Вход

Регистрация

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

 

= Мир MS Excel/Как транспонировать несколько таблиц - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как транспонировать несколько таблиц (Формулы/Formulas)
Как транспонировать несколько таблиц
Nikonka89 Дата: Вторник, 02.06.2020, 13:34 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2019
Добрый день.
вопрос такой. У меня есть несколько таблиц, на листе примерно 250 таблиц. Они одного размера, как во вложении.
Сейчас я вручную просматриваю колонку "согласование", выбираю "согласовано" и копировать - вставить на соседний лист. Так каждую таблицу.

пример во вложении. "СВОД" - это то, что я делаю вручную.
Может можно написать макрос, который бы это делал ?
Была идея транспонировать таблицы, чтобы они шли друг за дружкой вниз. Но через функцию "транспонировать" конечно не вышло)
Подскажите, как это автоматизировать ?
К сообщению приложен файл: 9790505.xlsx (16.4 Kb)
 
Ответить
СообщениеДобрый день.
вопрос такой. У меня есть несколько таблиц, на листе примерно 250 таблиц. Они одного размера, как во вложении.
Сейчас я вручную просматриваю колонку "согласование", выбираю "согласовано" и копировать - вставить на соседний лист. Так каждую таблицу.

пример во вложении. "СВОД" - это то, что я делаю вручную.
Может можно написать макрос, который бы это делал ?
Была идея транспонировать таблицы, чтобы они шли друг за дружкой вниз. Но через функцию "транспонировать" конечно не вышло)
Подскажите, как это автоматизировать ?

Автор - Nikonka89
Дата добавления - 02.06.2020 в 13:34
jakim Дата: Вторник, 02.06.2020, 15:24 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1197
Репутация: 313 ±
Замечаний: 0% ±

Excel 2010
Преобразовав Ваши таблицы по предложенному варианту, выборку можно сделать одной формулой

Код
=IFERROR(INDEX(Лист1!A$2:A$2000;AGGREGATE(15;6;ROW($1:$1000)*1/(Лист1!$H$2:$H$1000="увеличиваем УА");ROWS($2:2)));"")
К сообщению приложен файл: 5708890.xlsx (20.3 Kb)
 
Ответить
Сообщение
Преобразовав Ваши таблицы по предложенному варианту, выборку можно сделать одной формулой

Код
=IFERROR(INDEX(Лист1!A$2:A$2000;AGGREGATE(15;6;ROW($1:$1000)*1/(Лист1!$H$2:$H$1000="увеличиваем УА");ROWS($2:2)));"")

Автор - jakim
Дата добавления - 02.06.2020 в 15:24
Nikonka89 Дата: Среда, 03.06.2020, 08:19 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2019
А как вы преобразовали на листе 1 таблицы ? какой функцией ?
 
Ответить
СообщениеА как вы преобразовали на листе 1 таблицы ? какой функцией ?

Автор - Nikonka89
Дата добавления - 03.06.2020 в 08:19
Nikonka89 Дата: Среда, 03.06.2020, 08:23 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2019
Ведь не вручную копировать - вставить? у меня таких 250 таблиц
 
Ответить
СообщениеВедь не вручную копировать - вставить? у меня таких 250 таблиц

Автор - Nikonka89
Дата добавления - 03.06.2020 в 08:23
PooHkrd Дата: Среда, 03.06.2020, 15:39 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 7 ±
Замечаний: 0% ±

Office 365
Доброго дня.
Вариант решения на 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]
К сообщению приложен файл: _9790505.xlsx (27.6 Kb)


Вот горшок пустой, он предмет простой...

Сообщение отредактировал PooHkrd - Среда, 03.06.2020, 15:40
 
Ответить
СообщениеДоброго дня.
Вариант решения на 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]

Автор - PooHkrd
Дата добавления - 03.06.2020 в 15:39
Nikonka89 Дата: Среда, 03.06.2020, 21:21 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2019
PooHkrd, получилось. Спасибо!

попробовала поменять немного, чтобы выбиралось по столбцу "комментарии", а не по столбцу "согласование":

[vba]
Код
FilteredComments = Table.SelectRows(LowercasedText, each [Комментарии] = "оставляем УА без изменений")
[/vba],

получилось. А как добавить два условия, чтобы выбирались и "оставляем УА без изменений" и "увеличиваем УА" ?
 
Ответить
СообщениеPooHkrd, получилось. Спасибо!

попробовала поменять немного, чтобы выбиралось по столбцу "комментарии", а не по столбцу "согласование":

[vba]
Код
FilteredComments = Table.SelectRows(LowercasedText, each [Комментарии] = "оставляем УА без изменений")
[/vba],

получилось. А как добавить два условия, чтобы выбирались и "оставляем УА без изменений" и "увеличиваем УА" ?

Автор - Nikonka89
Дата добавления - 03.06.2020 в 21:21
Pelena Дата: Среда, 03.06.2020, 21:33 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19165
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
[vba]
Код
each [Комментарии] = "оставляем уа без изменений" or [Комментарии] = "увеличиваем уа"
[/vba]
или, если нужны все непустые
[vba]
Код
each [Комментарии] <> null
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[vba]
Код
each [Комментарии] = "оставляем уа без изменений" or [Комментарии] = "увеличиваем уа"
[/vba]
или, если нужны все непустые
[vba]
Код
each [Комментарии] <> null
[/vba]

Автор - Pelena
Дата добавления - 03.06.2020 в 21:33
Nikonka89 Дата: Четверг, 04.06.2020, 18:29 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2019
Получилось. Огромное спасибо!
 
Ответить
СообщениеПолучилось. Огромное спасибо!

Автор - Nikonka89
Дата добавления - 04.06.2020 в 18:29
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как транспонировать несколько таблиц (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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