Страницы: 1
RSS
Удалить строки несмежных диапазонов в столбце.
 
Приветствую форумчан!  
Подскажите, плиз, как удалить строки не смежных диапазонов в столбце (в VBA).  
Предпологаю, диапазоны нужно выделить и удалить.  
С удалением понятно: Selection.Delete Shift:=xlUp  
А как выделить строки не смежных диапазонов???  
Заранее благодарен....
 
Выделение строк по параметру X имеет вид    
 
Rows((X1) & ":" & (X2)).Select  
 
А если таких диапазонов несколько...?!?
 
А макрорекордером не пробовали воспользоваться?  
 
Sub Макрос1()  
   Range("5:8,14:16").Select  
   Selection.Delete Shift:=xlUp  
End Sub
 
{quote}{login=ALEX1377}{date=23.05.2011 11:58}{post}Предпологаю, диапазоны нужно выделить и удалить.  
{/post}{/quote}  
выделять необязательно
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=Михаил С.}{date=24.05.2011 12:21}{thema=}{post}А макрорекордером не пробовали воспользоваться?{/post}{/quote}  
Михаил, я конечно извиняюсь, но вы для чего VBA пользуетесь - чтобы создать код для одного конкретного случая? - тогда лучше удалять вручную, без VBA. Интересует код на все случаи жизни, когда несмежные диапазоны могут быть в разных ячейках одного конкретного столбца.... Определение диапазонов необходимо выполнить в VBA...
 
Как вариант, не углубляясь..  
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 
Данный код удаляет пустые ячейки между диапазонами. Необходимо наоборот, удалить заполненные ячейки. (Наверное я не очень понятно описал ситуацию )))
 
Range("A:A").SpecialCells(xlCellTypeConstants, 23).EntireRow.Delete  ))
 
Спасибо МАУГЛИ, ПОМОГ, РАБОТАЕТ !!! )))) Вопросик попутный по коду - 23 в коде что означает (по остальному вроде понятно)....
 
числа 1  
текст 2  
логические 4  
ошибки 16
 
to Маугли: а как выделить диапазоны в столбце, значения ячеек которых равны 0?  
может есть в методе    
Range("A:A").SpecialCells(xlCellTypeConstants, 23).EntireRow.Delete  
 
решение и такой задачи? )  
 
Спасибо
 
Как вариант - сначала заменить нули на пусто, потом удалить пустые:  
 
with columns(1)  
.replace 0,"",xlwhole  
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete  
end with
 
а если нужно удалить не смежные строки,    
  заранее неизвестно сколько будет диапазонов и строк... много.  
данные по индексам строк, которые надо удалить, хранятся в массиве.....  
Пробовал записывать адрес диапазона в строковую переменную, а потом удалять но...  
способ "Range("5:8,14:16").Select" не подходит, так как если количество диапазонов превышает 35  и кол строк 190, этот метод перестает работать..  
UNION - не знаю как прикрутить  
по одной удалять в цикле - не хочу  
 
может кто что подскажет???
 
{quote}{login=drx}{date=30.08.2012 06:19}{thema=}{post} UNION - не знаю как прикрутить{/post}{/quote}А справка по Union не помогает?  
Union(Range1, Range2, ... Range30)
 
я заранее..не могу написать Union(Range1, Range2, ... Range30) так как не знаю сколько их будет этих рендж...  
  ... как это сделать?  может в цикле можно к УНИОН добавлять РЕНДЖ  как то?
 
Как вариант..
 
никто не поможет?....  
ведь многим может понадобиться....  
...или я туплю насчет УНИОН,  ....ну не могу догнать как к нему РЕНДЖ добавлять по ходу программы...
 
Маугли, спасибо, но этот вариант у меня уже был. кроме того можно около 35 диапазонов за один шаг удалять... но вот все за раз ....уже чисто спортивный интерес.
 
>> никто не поможет?....  
drx, можно сидеть и тупо ждать, пока кто-то за Вас нарисует пример, чтоб удовлетворить Ваш "чисто спортивный интерес". А можно воспользоваться поиском. И я и мои друзья выкладывали сотни примеров наполнения диапазона через Union в цикле. Можно еще прочесть Правила и выложить свой пример, со своими попытками.
Я сам - дурнее всякого примера! ...
 
kuklp -  можно же сказать, что было уже, поищи по таким-то ключам.  
так нет надо обязательно в форме "тупо", "за вас нарисует" и т.д....  
ну да ладно...
 
Все это давным-давно сказано в правилах форума! Только никто не желает себя утруждать их прочтением. А именно тупо постят в форум. А нам не осточертевает по сотне раз отвечать на один вопрос, как думаете? Да еще при таких тормозах форума. Вот например ссылка, наслаждайтесь:  
http://www.planetaexcel.ru/forum.php?thread_id=24871&page_forum=2&allnum_forum=52
Я сам - дурнее всякого примера! ...
 
{quote}{login=drx}{date=31.08.2012 02:08}{thema=}{post}kuklp -  можно же сказать, что было уже, поищи по таким-то ключам. так нет надо обязательно в форме "тупо", "за вас нарисует" и т.д.{/post}{/quote}drx, а Вы действительно считаете, что перед тем, как подсказать Вам решение, человек ещё должен за Вас (именно за Вас) создать файл, где заполнит таблицу, определит, - какие строки подлежат удалению...? Или эту работу должен сделать тот, кому нужна помощь? Очень хочу услышать Ваш ответ.
Страницы: 1
Читают тему
Наверх