Страницы: 1
RSS
Перенос данных из двух разных таблиц в одну общую
 
Здравствуйте, подскажите пожалуйста, что-то гугл не помог никак. Видать задача слишком простая, но самому на ум не приходит решение.
Есть несколько таблиц с одинаковой структурой. Надо их все слить в одну таблицу, т.е. структура таблицы остаётся такой же как и у множества мелких, но данные объединяются.
Ничего кроме банального ctl-c+v не приходит в голову. Есть какой-то способ это сделать иначе? Просто хотелось бы, чтобы при пополнении мелких таблиц, данные бы переносились и в общую.Спасибо.
 
Тут смотрели Консолидация (объединение) данных из нескольких таблиц в одну?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
cmepx, без примера сложно что-то подсказать) https://www.planetaexcel.ru/techniques/2/138/
Не бойтесь совершенства. Вам его не достичь.
 
Спасибо за ссылки, но консолидация что-то считает.
Мне не нужен подсчёт, мне нужно объединение.
в одинаковых таблицах есть наполнение в виде записей. Все эти записи надо объединить в одну таблицу.
Пример.. Ну вот, например, есть две таблицы с 3мя столбцами. Нужно получить общую таблицу.
Табл1.                Табл2.                             Общая табл.
вап кен у34        ывава ыва ыв3ыв         вап кен у34
про кпр пр6        цукц цук цукуккц         про кпр пр6
стр апр ы3а        цукцук цукк цукк         стр апр ы3а
                                                                ывава ыва ыв3ыв
                                                                цукц цук цукуккц
                                                                цукцук цукк цукк
 
cmepx, например нужно приложить файл-пример согласно правилам форума (которые лучше прочитать Вам для получения помощи) ...и в нем показать - это исходные данные вот такие,А а вот это хочу получить.
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, спасибо за Ваше терпение, вот пример в файле.
Из двух таблиц получаем общую через ctrl-c+v. Каким-то ещё образом так можно слить данные из таблиц в одну? Спасибо.
 
cmepx, макрос пойдет?
Не бойтесь совершенства. Вам его не достичь.
 
cmepx, попробуйте на листе "Общая" в ячейку "А2":
=ЕСЛИ(ТАБЛ_1!A2="";ДВССЫЛ("ТАБЛ_2!"&АДРЕС(СТРОКА()-СЧЁТЗ(ТАБЛ_1!A:A)+1;СТОЛБЕЦ()));ТАБЛ_1!A2)
И протянуть вправо и вниз.
Должно работать при условии что в первой и второй таблицах заполнены ВСЕ ячейки :)
Тема: "Перенос данных из двух разных таблиц в одну общую"
Изменено: _Igor_61 - 17.03.2020 13:53:49
 
PQ
Код
let
    Источник = Table.Combine({Таблица1, Таблица2})
in
    Источник
Вполне такой нормальный кинжальчик. Процентов на 100
 
cmepx, не знаю сколько у Вас листов, сделал для всех листов в книге, за исключением листа под названием "ОБЩАЯ"
Код
Sub sbor_s_listov()
Dim sh As Worksheet
Range("A2:C" & Worksheets("ОБЩАЯ").Cells(Rows.Count, 3).End(xlUp).Row + 1).ClearContents
For Each sh In Worksheets
    If sh.Name <> "ОБЩАЯ" Then
        sh.Activate
        ilastrow = sh.Cells(Rows.Count, 3).End(xlUp).Row
        sh.Range("A2:C" & ilastrow).Copy
        Worksheets("ОБЩАЯ").Activate
        ilastrow2 = Worksheets("ОБЩАЯ").Cells(Rows.Count, 1).End(xlUp).Row + 1
        Cells(ilastrow2, 1).Select
        ActiveSheet.Paste
    End If
Next sh
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,
Большое спасибо. Ваш вариант выглядит оптимальным. Конечно, для добавления новых данных из мелких таблиц, по сути, каждый раз общая таблица будет перестраиваться. НО это значительно удобнее ручного копирования со вставкой.
Вариант от _Igor_61 тоже хорош, но вот каждый раз тянуть на неопределённое количество ячеек так себе занятие =) Ведь надо в общую добавлять изменения из мелких.
Так что полное перестроение - это хороший вариант.
Один момент, Mershik, в скрипт можно добавить сортировку по порядку от А до Я (по первому столбцу)? Или же этот момент надо делать вручную.
Ещё раз спасибо.
Изменено: cmepx - 17.03.2020 14:40:45
 
cmepx,
Код
Sub sbor_s_listov()
Dim sh As Worksheet
Range("A2:C" & Worksheets("ОБЩАЯ").Cells(Rows.Count, 3).End(xlUp).Row + 1).ClearContents
For Each sh In Worksheets
    If sh.Name <> "ОБЩАЯ" Then
        sh.Activate
        ilastrow = sh.Cells(Rows.Count, 3).End(xlUp).Row
        sh.Range("A2:C" & ilastrow).Copy
        Worksheets("ОБЩАЯ").Activate
        ilastrow2 = Worksheets("ОБЩАЯ").Cells(Rows.Count, 1).End(xlUp).Row + 1
        Cells(ilastrow2, 1).Select
        ActiveSheet.Paste
    End If
Next sh
    ActiveWorkbook.Worksheets("ОБЩАЯ").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("ОБЩАЯ").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("ОБЩАЯ").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Изменено: Mershik - 17.03.2020 14:44:20
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,
Так, в файле заменил ваш старый код на новый, нажимаю кнопку скрипта и получаю ошибку.
 
cmepx, устанвоить просто фильтр на шапку
Изменено: Mershik - 17.03.2020 15:12:02
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, ОООО, Магия сработала =) Спасибо.
Страницы: 1
Наверх