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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2010, 02:25   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Удалить не нужные строки в диапазоне

В примере, нужно найти одинаковые числа в ст. 3 и ст. 22, а все остальные строки удалить, причем строки, удалить в диапзоне А8:Т261.
Т. е. если число в А8, не нашлось в диапазона V8:V214, то строка А8:Т8, удалить: ячейки, со сдвигом вверх.

Окрашивать одноименные числа, получается(макрос zxc), а вот удалить??
Да, данные в ст. 22, не нужны, нужны тока данные в ст. 3, может так, проще будет.
Вложения
Тип файла: rar 1.rar (18.6 Кб, 17 просмотров)

Последний раз редактировалось valerij; 05.03.2010 в 02:45.
valerij вне форума Ответить с цитированием
Старый 05.03.2010, 06:47   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно, например, так:
Код:
Sub Main()
    Dim x As Range, i As Long: Application.ScreenUpdating = False
    For i = Cells(Rows.Count, 3).End(xlUp).Row To 8 Step -1
        Set x = [V:V].Find(Cells(i, 3), LookAt:=xlWhole)
        If x Is Nothing Then Range(Cells(i, 1), Cells(i, 20)).Delete Shift:=xlUp
    Next
End Sub
Пример во вложении.
Вложения
Тип файла: rar 2.rar (19.0 Кб, 23 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 05.03.2010 в 09:23.
SAS888 вне форума Ответить с цитированием
Старый 05.03.2010, 23:47   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Можно, например, так:
Код:
Sub Main()
    Dim x As Range, i As Long: Application.ScreenUpdating = False
    For i = Cells(Rows.Count, 3).End(xlUp).Row To 8 Step -1
        Set x = [V:V].Find(Cells(i, 3), LookAt:=xlWhole)
        If x Is Nothing Then Range(Cells(i, 1), Cells(i, 20)).Delete Shift:=xlUp
    Next
End Sub
Пример во вложении.
ОК!!!! Спасибо!!!!!
Сереж, но несколько вопросов.
1. Зачем Cells(Rows.Count, 3).End(xlUp).Row, если мона сразу 260?
2. Почему поиск с конца(260 до 8)?
3. Че делает LookAt:=xlWhole?
valerij вне форума Ответить с цитированием
Старый 06.03.2010, 00:13   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от valerij;
2. Почему поиск с конца(260 до 8)?
А Вы начните с 8 и до 260 ,сразу увидите пропуски.
При прямом проходе если например удалили 10 строку ,11 становится уже 10 и выпадает с проверки
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 06.03.2010, 12:16   #5
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
и выпадает с проверки
в принципе межно и сверху, добавив в строку:
Код:
...Delete Shift:=xlUp: i = i - 1
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 06.03.2010, 12:23   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

А третий пункт, кто нить объяснит?
3. Че делает LookAt:=xlWhole?
valerij вне форума Ответить с цитированием
Старый 06.03.2010, 16:18   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Че делает LookAt:=xlWhole?
Ищет ТОЧНОЕ соответствие.
К примеру, если ищем значение 245, то будут найдены только ячейки, содержащие 245, а не ячейки со значениями типа 2456, 3245 и т.д.
EducatedFool вне форума Ответить с цитированием
Старый 06.03.2010, 18:40   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Ищет ТОЧНОЕ соответствие.
Все, понял, СПАСИБО!!!!
---------------
| ^^пиво^^ \\|""\\_,_
|___________||___|__|)
(@)(@)""*|(@)(@)**(@)
valerij вне форума Ответить с цитированием
Старый 06.03.2010, 23:21   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Подскажите, i = Cells(Rows.Count, 3).End(xlUp).Row определят последнею не пустую ячейку в 3 столбце.
А как определить последнею не пустую ячейку, отличную от нуля?
Например, нужен адрес пятерки:
Код:
123
125
789
5
0
0
0
Или это выражение не катит?
Так, получилось
Код:
For i = Cells(Rows.Count, 3).End(xlUp).Row To 8 Step -1
        If Cells(i, 3) > 0 Then MsgBox i: Exit For
Next

Последний раз редактировалось valerij; 07.03.2010 в 00:20.
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вырезать из строки нужные числа fize Помощь студентам 1 16.12.2009 18:25
Не получается удалить строки из TMemo RIO Общие вопросы Delphi 2 03.12.2009 01:07
Удалить строки из RichEdit спаситепомогите Помощь студентам 1 08.08.2009 03:00
Помогите вытащить из строки нужные данные! Romashkaz Общие вопросы C/C++ 0 22.11.2008 13:30
удалить похожие строки ZORRO2005 Microsoft Office Excel 0 28.11.2006 22:03