Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 12:27   #1
HospodySave
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 13
Сообщение перенос строки с пустой ячейки

Приветствую всех программистов.
Помогите пожалуйста с такой задачеи:
Исходный файл 1.JPEG
Должен получиться файл 2.JPEG
Задача заключается в том что, с Листа1 нужно перенести строки которые начинаются с пустой ячейки на Лист2 с помощью кода
И эти строки с пустыми ячейками могут быть не только
в диапозоне "A2:D2" "A5:D5" они могут распалагаться в любой строке колонке на Листе1. Было бы легко сам сделал бы но для миня это трудно.
Так что прощу помощи профи Помогите Пож
Изображения
Тип файла: jpg 1.JPG (108.5 Кб, 135 просмотров)
Тип файла: jpg 2.JPG (108.2 Кб, 134 просмотров)
HospodySave вне форума Ответить с цитированием
Старый 22.06.2010, 14:56   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно обойтись без циклов, сравнений и перебора ячеек. Например, так:
Код:
Sub Main()
    Dim x As Range: Application.ScreenUpdating = False
    Rows(1).AutoFilter: Rows(1).AutoFilter Field:=1, Criteria1:="="
    With ActiveSheet.AutoFilter.Range.Columns(1)
        Set x = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlVisible)
        x.EntireRow.Copy Sheets(2).[A1]
    End With: Rows(1).AutoFilter
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.06.2010, 15:06   #3
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Application.ScreenUpdating = True
вместо
Rows(1).AutoFilter
Или так и надо?
nilem вне форума Ответить с цитированием
Старый 22.06.2010, 15:15   #4
HospodySave
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 13
По умолчанию

оО спасибо очень благодарен за вашу помощь!! А можете описать что делают Эти строчки
Rows(1).AutoFilter: Rows(1).AutoFilter Field:=1, Criteria1:="="
With ActiveSheet.AutoFilter.Range.Column s(1)
Set x = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlVisible)

Последний раз редактировалось HospodySave; 22.06.2010 в 15:22.
HospodySave вне форума Ответить с цитированием
Старый 22.06.2010, 15:43   #5
HospodySave
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 13
По умолчанию

Есть у кого-то ешо варианты как это сделать?
HospodySave вне форума Ответить с цитированием
Старый 22.06.2010, 16:57   #6
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

с позволения уважаемого SAS888 предлагаю добавить в код:

Код:
Sub Main()
Dim x As Range: Application.ScreenUpdating = False
Rows(1).Insert Shift:=xlDown    
Rows(1).AutoFilter: Rows(1).AutoFilter Field:=1, Criteria1:="="
    With ActiveSheet.AutoFilter.Range.Columns(1)
        Set x = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlVisible)
        x.EntireRow.Copy Sheets(2).[a1]
    End With: Rows(1).AutoFilter: Rows(1).Delete: Application.ScreenUpdating = True:End Sub
Так как иначе, если в первой строке строка с пустой ячейкой, она не будет скопирована, и, заодно, включить обновление экрана
EugeneS вне форума Ответить с цитированием
Старый 22.06.2010, 23:19   #7
HospodySave
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 13
По умолчанию

Спасибо всем в принципе я получил ответ можно закрыть тему.
Но есть ещо 1 вопрос что означает этот код
Rows(1).AutoFilter: Rows(1).AutoFilter Field:=1, Criteria1:="="
With ActiveSheet.AutoFilter.Range.Column s(1)
Set x = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlVisible)

что такое Field почему именно 1 может кто обьяснить в кратце что делают эти строки?))

Последний раз редактировалось HospodySave; 23.06.2010 в 12:19. Причина: Ешо 1 вопрос
HospodySave вне форума Ответить с цитированием
Старый 23.06.2010, 12:22   #8
HelperAwM
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 19
По умолчанию

+1 что означают те строки?
HelperAwM вне форума Ответить с цитированием
Старый 23.06.2010, 12:45   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Rows(1).AutoFilter: Rows(1).AutoFilter Field:=1, Criteria1:="="
Устанавливаем автофильтр по 1-й строке и критерий автофильтра по 1-му столбцу = "пустые значения".

With ActiveSheet.AutoFilter.Range.Column s(1)
Используем метод With, задавая ему диапазон в пределах 1-го столбца автофильтра.

Set x = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlVisible)
Присваиваем переменной x (As Range) диапазон в пределах диапазона автофильтра из ячеек 1-го столбца за исключением заголовка, в который входят только видимые ячейки. Иными словами, диапазон x будет содержать отфильтрованные ячейки 1-го столбца по заданному критерию (если "пусто").
Попробуйте добавить в макрос последней строкой код
Код:
x.Select
и Вам все станет ясно.

P.S. Если 1-я строка не является заголовком, то примите к сведению замечания от EugeneS
P.P.S. По поводу обязательности Application.ScreenUpdating = True - вопрос дискуссионный. В 99% случаев его можно не выполнять.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 23.06.2010 в 13:04.
SAS888 вне форума Ответить с цитированием
Старый 23.06.2010, 14:13   #10
HospodySave
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 13
По умолчанию

Спасипки.
HospodySave вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить браузер рисовать рамку вокруг пустой ячейки? Stilet HTML и CSS 7 11.09.2012 13:36
Проверка пустой ячейки в DGV coper Общие вопросы .NET 2 11.08.2010 05:49
Заполнение пустой ячейки в строке предидущим значением 1134 Microsoft Office Excel 2 21.01.2010 16:26
удаление строки, начинающейся с пустой ячейки grichanuk Microsoft Office Excel 3 01.12.2009 05:31
Подскажите иной способ нахождения последней пустой ячейки! Maxx Microsoft Office Excel 6 29.12.2008 11:40