подскажите с копированием

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
angej
Сообщения: 13
Зарегистрирован: 25 сен 2008, 15:32

привет!!!
возникла следующая задачка с копированием, подскажите как проще решить...

есть некий лист с данными причем данные на листе не имеют какой-либо закономерности... а имеют например следующий вид:

данные размещаются с 20 по 3000 строчки, но все строчки подряд не заполнены... тоесть, может быть так что сначала заполнены например 10 строчек потом 30 пустых, потом 50 заполнены 5 пустых и так далее... а скопировать нужно это все в другую книгу без пустых строчек :confused:
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Сначала копируй целиком лист, потом макрос для удаления пустых. Перебирай во внешнем цикле строки, а во вложенном - столбцы. Перед вложенным циклом ставь флаг. Если в нём найдена пустая ячейка, флаг сбрось. За циклом если флаг ешё установлен, то непустая ячейка не найдена, тогда удаляй строку.
примерно так:

Код: Выделить всё

sub deleterows
dim i as integer
dim j as integer
dim b as boolean
for i=65536 to 1step -1
    b=true
    for j=1 to 10 step 1
       if Cells(i,j)<>"" then f=false
    next j
    if  b then Rows(i).Delte()
next i  
end sub
Вместо десяти поставь своё число столбцов. Решение, возможно, дряное, но ты ведь требуешь минимальную сложность разработки, а не время исполнения, а проще по-моему некуда.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Код: Выделить всё

Sub [B]КопированиеЗаполненныхСтрок[/B]()
    On Error Resume Next
    Intersect([a:iv], Cells.SpecialCells(2).EntireRow).Copy _
            Workbooks("Книга11").Worksheets(1).[a2]
End Sub
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Ответить