2015-02-06 3 views
-3

У меня есть большое количество листа excel, где 16k записей я хочу разбить на несколько листов, как в 2000 записей в 1 Excel листы, и если любой думаю, оставим, поэтому его следует добавить в следующем лист, пожалуйста, помогите мне в этом.Как сломать большой лист Excel на несколько листов

Заранее спасибо так много Виджай Бхатт

ответ

0

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

Обновление Items

Set CWS = Sheets("Sheet2") 'Source Worksheet name 
LineNo = 5 ' Number of lines in each sheet 

Macro 1: удалим скопировал строки из исходного листа.

Dim CWS As Worksheet 
Dim LastRow As Long 
Dim S_No As Long 
Dim LineNo As Long 

Set CWS = Sheets("Sheet2") 'Source Worksheet name 
LastRow = Range("A" & Rows.Count).End(xlUp).Row 
LineNo = 5 ' Number of lines in each sheet including header 
S_No = 1 

i = 1 
While i < LastRow 
    CWS.Range("1:" & LineNo).Copy 
    Sheets.Add After:=Sheets(Sheets.Count) 
    ActiveSheet.Name = "Partition " & S_No 
    Sheets("Partition " & S_No).Range("A1").PasteSpecial 
    CWS.Range("2:" & LineNo).Delete Shift:=xlUp 
    LastRow = CWS.Range("A" & Rows.Count).End(xlUp).Row 
    S_No = S_No + 1 
Wend 

Макро 2: Будет держать скопированные строки в исходном листе.

Dim CWS As Worksheet 
Dim LastRow As Long 
Dim S_No As Long 
Dim LineNo As Long 

Set CWS = Sheets("Sheet2") 'Source Worksheet name 
LastRow = Range("A" & Rows.Count).End(xlUp).Row 
LineNo = 5 ' Number of lines in each sheet excluding header 
S_No = 1 

For i = 2 To LastRow 
    CWS.Range("1:1," & i & ":" & i + LineNo - 1).Copy 
    Sheets.Add After:=Sheets(Sheets.Count) 
    ActiveSheet.Name = "Partition " & S_No 
    Sheets("Partition " & S_No).Range("A1").PasteSpecial 
    i = i + Sheets("Partition " & S_No).Range("A" & Rows.Count).End(xlUp).Row - 1 
    S_No = S_No + 1 
Next 

UPDATE: Я обновил код, чтобы скопировать первую строку в качестве заголовка для всех листов, созданных. Но, пожалуйста, прочитайте комментарий рядом с переменной LineNo.

+0

Большое спасибо за помощь. Я новичок в vba. я учился у себя дома. Еще раз спасибо . –

+0

Спасибо, но все же у меня есть 1 сомнение, мне нужны заголовки одинаковые для всех листов. Большое спасибо за то, что он действительно работает. –

+0

@vijaybhatt привет, я обновил код в зависимости от вашего запроса. Теперь он скопирует первую строку как заголовок для всех страниц. – Dubison

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