Страницы: 1
RSS
Разделить таблицу на три части макросом.
 
Здравствуйте, уважаемые форумчане.  
Я совсем не силён в VBA, а при записи макроса макрорекодером - моя задача не решается, поэтому решил попросить помощи у Вас. Поиск не дал мне ответа на мой вопрос.  
 
Дело вот в чём. Существует таблица с постоянным количеством столбцов (4шт.), но с постоянно меняющимся количеством строк (10-150шт). Очень хотелось бы, разбивать эту таблицу макросом на три равные части и помещать их в другой лист в соответствующие столбцы (в приложенном файле значения из листа "spisok" разбить и скопировать на лист "form"). И ещё один момент, если количество строк в списке не кратно трём, то нужно, чтобы меньшая часть (остаток) помещалась в последнюю - 3-ю часть.    
 
Извините, за запутанное описание, надеюсь файл всё объяснит.  
Заранее благодарю тех, кто захочет помочь.
 
Вот весь макрос:  
 
Sub test()  
   Dim ra As Range: Set ra = Range([b2], Range("b" & Rows.Count).End(IIf(Len(Range("b" & Rows.Count)), xlDown, xlUp))).Offset(-1)
   rc = -Int(-ra.Rows.Count / 3)    'Debug.Print rc, ra.Rows.Count  
   ' очистка листа ФОРМА от прежних данных  
   On Error Resume Next: Intersect(shf.[4:10000], shf.UsedRange).Clear
 
   ' копирование диапазонов  
   Range("a2").Offset(0).Resize(rc, 4).Copy shf.Cells(4, 2)  
   Range("a2").Offset(rc).Resize(rc, 4).Copy shf.Cells(4, 6)  
   Range("a2").Offset(2 * rc).Resize(ra.Rows.Count - 2 * rc, 4).Copy shf.Cells(4, 10)  
     
   shf.Activate ' активация листа ФОРМА  
End Sub  
 
 
Пример вашего файла с макросом - в файле: http://excelvba.ru/XL_Files/Sample__17-11-2010__20-07-14.zip  
(нажмите зелёную кнопочку для запуска)  
 
PS: данные копируются вместе с форматированием.  
Итоговая строка не добавляется.
 
EducatedFool, огромное спасибо за вашу помощь. Макрос отлично работает.  
 
Но у меня остался ещё один не разрешённый вопрос, как поправить этот код, чтобы макрос не очищал все строки под шапкой и копировал туда данные, а именно вставлял необходимое количество строк с ними, оставляя тем самым строку итогов. Дело в том, что мне нужно переносить данные в некую форму, в которой под данными будет ещё дополнительная информация и если они будут удалятся получится не совсем то, что я хочу получить. Попробовал в коде изменить "Copy shf.Cells" на "Paste shf.Cells" и на "Insert shf.Cells", но так как знаний в VBA  я "ноль" - фокус не удался.  
Буду признателен за помощь.
 
И ещё один вопрос.    
Как сделать (поправить макрос), чтобы данные вставлялись без форматирования?    
Может кто ссылочку подкинет где про это почитать? На форуме не могу найти похожих тем по моей проблеме.
 
The_Prist, благодарю.    
С форматированием всё получилось.  Макрорекодер мучаю, но пока не очень успешно, как видите.  
Спасибо ещё раз, буду разбираться со вставкой...
Страницы: 1
Читают тему
Наверх