2016-04-07 2 views
0

В excel у меня есть несколько листов (около 50), каждый с одинаковым заголовком в столбцах A, B и C, а затем до 199 строк данных (строка 1 = заголовок, строки 2-200 = данные). Процедура присвоения имен как Wk 1 Mon, Wk 2 Tue и т.д., вплоть до Wk 10 FriОбъединить данные со многих листов на один

То, что я хотел бы сделать, это отобразить все данные из этих вкладок в одном списке, на одном листе. Я мог бы сделать это, указав каждую ячейку на каждом листе, один под другим, но проблема в том, что не все листы фактически имеют данные прямо до строки 200 (некоторые имеют только заголовок), и я хочу пропустить пустую строк.

У меня нет абсолютно никакой подсказки, как подойти к этому в Excel. Мое понимание VLOOKUP и пр. В лучшем случае является рудиментарным; Я не уверен, могу ли я достичь того, что требуется, используя это семейство функций.

Я также рассмотрел функцию консолидации Excel, но я не думаю, что это то, что мне нужно в этом сценарии.

Не могли бы вы предложить, как я могу достичь своих целей. Я бы предпочел сделать это через рабочие листы только функции, но я был бы открыт для VBA, если бы было достаточно простое решение.

ответ

1

Попробуйте этот бит VBA. Он в основном прокручивает каждый лист, находит последнюю строку и вставляет ее в нижней части данных первых листов. Это немного грубо в методологии, но она работает!

Dim ws As Worksheet 

For Each ws In Worksheets 
    i = i + 1 

    If i = 1 Then 
     FirstSheet = ws.Name 
    ElseIf i > 1 Then 
     ws.Activate 
     LastCell = Cells(65536, 1).End(xlUp).Row 
     Range("A1:C" & LastCell).Select 

     Selection.Copy 
     Worksheets(FirstSheet).Activate 
     Cells(Cells(65536, 1).End(xlUp).Row + 1, 1).Select 
     ActiveCell.PasteSpecial xlPasteValuesAndNumberFormats 
    End If 
Next ws 
+0

Я бы, вероятно, отключил обновление экрана в начале и конце кода, используя Application.ScreenUpdating = False/Application.ScreenUpdating = True. –

Смежные вопросы