Страницы: 1
RSS
Объединение таблиц по заголовкам
 
На картинке всё показано. Пробовал через Power Query, но тогда нужно, чтобы таблицы были запросами. А все примеры в интернете, которые работают через VBA - это в том случае, если таблицы расположены на разных листах. Подскажите, как такое сделать без ctrl+c/ctrl+v
 
Цитата
Ranker Dark написал:
как такое сделать без ctrl+c/ctr
тоже на картинке показать? сделайте пример в файле
 
Цитата
Ranker Dark написал:
это в том случае, если таблицы расположены на разных листах
ну не знаю - у меня работает:
Соблюдение правил форума не освобождает от модераторского произвола
 
Просто удалите пустые строки между столбцами.... вместе с шапкой нижней страницы... (нужен ваш файл-пример) и как вы хотите видеть работу формулой? макросом? Мы можем за вас в вашем файле удалить руками пустые строки между таблицами и выложить готовый результат вам...
 
OFF New,  :D
Цитата
New написал:
Мы можем за вас в вашем файле удалить руками пустые строки
Изменено: Mershik - 23.09.2020 14:30:45
Не бойтесь совершенства. Вам его не достичь.
 
New, а если таблицы находятся в разных местах листа? Или таблиц много? Вот файл-пример:
 
Ranker Dark, т.е. у вас на самом деле не таблицы, а просто заполненные ячейки в определенных местах листа?
Соблюдение правил форума не освобождает от модераторского произвола
 
Ranker Dark,всегда в строках 2 указано именно "таблица 1" и так далее?
а где же
Цитата
находятся в разных местах листа?

решение сейчас предложат и будет не верно так как окажется на разных листах
Изменено: Mershik - 23.09.2020 14:46:45
Не бойтесь совершенства. Вам его не достичь.
 
Можно почитать ЗДЕСЬ или ТУТ
Изменено: msi2102 - 23.09.2020 15:00:51
 
Цитата
buchlotnik написал: ...у вас на самом деле не таблицы...
Даже если я делаю из их таблицу - результат не меняется. Power Query и примеры VBA, что я нашел, не подходят для решения моей задачи
 
Цитата
Ranker Dark написал:
А если таблицы находятся в разных местах листа?
Ничего не знаю. Вы в первом предложении в самом первом посте написали - "на картинке всё показано". На картинке одна таблица под другой... ))
А в вашем файле таблицы расположены рядом друг с другом (сбоку)
Изменено: New - 23.09.2020 15:03:46
 
Ranker Dark, ну ловите для Вашего примера) жду что же не так) только уберите объеденные ячейки в первых 3 столбцах и в А1, В1, С1 -название шапки укажите
Код
Sub dsd()
Dim i As Long, n As Long, lr As Long, lr2 As Long, lcol As Long
lr = Cells(Rows.Count, 5).End(xlUp).Row
lcol = Cells(2, Columns.Count).End(xlToLeft).Column + 2
lr2 = 2
Range("A2:C12345").ClearContents
For n = 5 To lcol Step 5
    For i = 5 To lr
        If Cells(i, n) <> "" And Cells(i, n - 1) = "" Then
            Cells(lr2, 1) = Cells(i, n)
            Cells(lr2, 2) = Cells(i, n + 1)
            Cells(lr2, 3) = Cells(i, n + 2)
        End If
        lr2 = lr2 + 1
    Next i
Next n
End Sub

Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Ranker Dark написал:
если я делаю из их таблицу
решается простейшим
Код
Sub Макрос1()
    Range("Таблица1[[#Headers]]").Copy [E13]
    Range("Таблица1").Copy [E13].Offset(1, 0)
    Range("Таблица2").Copy [E13].End(xlDown).Offset(1, 0)
End Sub
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
New написал: Вы в первом предложении в самом первом посте написали - "на картинке всё показано"
Видимо вы не поняли. Суть задачи - создать одну таблицу из двух. Вне зависимости от того, где на листе расположены таблицы
 
Если знать точное название одной и второй таблицы, то для макроса будет не важно, где они находятся. Либо как предложил buchlotnik перевести их в умные таблицы и дать имена каждой из них.
 
del
Изменено: buchlotnik - 23.08.2021 18:13:00
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Mershik написал:
ну ловите для Вашего примера)
Хороший вариант. Только вот жаль, что при разнице в количество строк, строки дублируются. Но это легко решаемо благодаря функции "Удаление дубликатов". Спасибо
 
Цитата
Ranker Dark написал:
при разнице в количество строк
какой разнице? изменил чуть макрос все нормально если разница в количестве строк
Код
Sub dsd()
Dim i As Long, n As Long, lr As Long, lr2 As Long, lcol As Long
lr = Cells(Rows.Count, 5).End(xlUp).Row
lcol = Cells(2, Columns.Count).End(xlToLeft).Column + 2
lr2 = 2
Range("A2:C12345").ClearContents
For n = 5 To lcol Step 5
    For i = 5 To lr
        If Cells(i, n) <> "" And Cells(i, n - 1) = "" Then
            Cells(lr2, 1) = Cells(i, n)
            Cells(lr2, 2) = Cells(i, n + 1)
            Cells(lr2, 3) = Cells(i, n + 2)
        End If
        lr2 = lr2 + 1
    Next i
Next n
End Sub

еще вариант

Код
Sub dsghd()
Dim lr As Long, i As Long, n As Long
Application.ScreenUpdating = False
Range("A2:C12345").ClearContents
lcol = Cells(2, Columns.Count).End(xlToLeft).Column + 2
For n = 5 To lcol Step 5
    lr = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range((Cells(5, n)), Cells(5, n + 2).End(xlDown)).Copy Destination:=Cells(lr, 1)
Next n
Application.ScreenUpdating = True
End Sub
Изменено: Mershik - 23.09.2020 15:22:45
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
buchlotnik написал: решается простейшим
Ваш результат чуть хуже. У вас при повторном нажатии не обновляется, а повторно заполняется

Цитата
Mershik написал: какой разнице?
Если в одной из таблиц будет четыри строки, а в другой три, то при объединении последняя строка меньшей таблицы дублируется

Цитата
buchlotnik написал: а лучше так
Вот это самое то! Спасибо
 
Цитата
Ranker Dark написал:
при повторном нажатии не обновляется, а повторно заполняется
мдя? трагедия просто...
Код
 Sub Макрос1()
    [E13].CurrentRegion.Clear
    Range("Таблица1[[#Headers]]").Copy [E13]
    Range("Таблица1").Copy [E13].Offset(1, 0)
    Range("Таблица2").Copy [E13].End(xlDown).Offset(1, 0)
End Sub
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Ranker Dark написал:
Вот это самое то!
неожиданно, сколько таблиц в реальности? может дописать сбор по списку?
Соблюдение правил форума не освобождает от модераторского произвола
 
Ну если вдруг интересно:
Я парсю таблицы с разных страниц одного сайта. На каждую страницу выделяю отдельный лист, но на каждой странице может быть от 1 до 9 таблиц. Таблицы одинаковы в ширину, но разные в длину, вот поэтому я размещаю их рядом, а не друг под другом.
 
может тогда вобще достаточно чего-то вроде
Код
Table.Combine(Table.SelectRows(Excel.CurrentWorkbook(), each Text.Contains([Name], "Таблица"))[Content])
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1
Наверх