В тази статия ще създадем макрос за разделяне на данните по определен брой редове.
Имаме необработени данни в лист „RawData“. Искаме да разделим тези данни на няколко листа.
Преди да стартираме макроса, трябва да посочим необходимия брой редове във всеки лист.
Обяснение на кода
CntRows = Cint (Sheets ("Main"). TextBox1.Value)
Горният код се използва за получаване на броя на необходимите листове в един лист.
LastRow = .Range ("A" & .Rows.Count) .End (xlUp) .Row
Горният код се използва за получаване на номера на реда на последната клетка.
Sheets.Add after: = Sheets (Sheets.Count)
Горният код се използва за добавяне на нов лист след последния лист.
.Range ("A" & n) .Resize (CntRows, LastColumn) .Copy Range ("A1")
Горният код се използва за копиране на определен брой редове в нов работен лист.
Моля, следвайте кода по -долу
Опция Explicit Sub SplitDataToMultipleSheets () 'Деклариране на променливи Dim LastRow As Long, n As Long, CntRows As Long Dim LastColumn As Integer' Получаване на броя на необходимите редове в един лист CntRows = CInt (Sheets ("Main"). TextBox1.Value ) 'Деактивиране на актуализациите на екрана Application.ScreenUpdating = False With Sheets ("RawData") "Получаване на номер на ред и колона на последната клетка LastRow = .Range (" A "& .Rows.Count) .End (xlUp) .Row LastColumn = .Range ("A1"). SpecialCells (xlCellTypeLastCell) .Колона 'Циклично прехвърляне на данни в листа За n = 1 към LastRow Стъпка CntRows' Добавяне на нови работни листове. Добавяне след: = Sheets (Sheets.Count) 'Копиране на данни в нови работен лист .Range ("A" & n) .Resize (CntRows, LastColumn) .Copy Range ("A1") Next n. Активирайте End With 'Активиране на актуализации на екрана Application.ScreenUpdating = True End Sub
Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта