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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 10:43   #1
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию Проверка ячеек на наличие искомого элемента

Приветствую всех, кто решил мне помочь
Проблема заключается вот в чем:
Необходимо, чтобы VBA проверил ячейку А:3 если в ячейке находится искомый элемент то выполнить действие, если нет то проверить ячейку В:3 и тогдалие до ячейки BQ
Заранее благодарю!
Vceznayka вне форума Ответить с цитированием
Старый 15.11.2011, 10:54   #2
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

проверка следующей ячейки только в том случае, если в предыдущей не найдено нужное?? или просто весь диапазон А3:BQ3 проверить?
Bape}l{ka вне форума Ответить с цитированием
Старый 15.11.2011, 10:59   #3
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию

Если можно сделать так чтобы проверил весь диапазон то еще лучше.
Но нужно чтобы выделил столбец в котором находится искомый элемент
Vceznayka вне форума Ответить с цитированием
Старый 15.11.2011, 11:01   #4
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

ну поконкретнее запрос дайте: что искать, что выполнять при нахождении.. ???
Bape}l{ka вне форума Ответить с цитированием
Старый 15.11.2011, 11:06   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Пробуйте
Код:
Sub ПоискЗначения() 'В 3-ей строке
      i = 1'с первого столбца
      While Not IsEmpty(Cells(3, i))
          n = 5 'Искомый элемент
          If Cells(3, i).Value = n Then
          Cells(3, i).Select
              Call MsgBox("Совпало", vbInformation, Application.Name)
          End If
          i = i + 1
      Wend
End Sub
Вложения
Тип файла: zip ПоискЗначения.zip (4.9 Кб, 15 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 15.11.2011 в 11:12. Причина: Вложение
VictorM вне форума Ответить с цитированием
Старый 15.11.2011, 11:13   #6
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию

Необходима в Книга1.xls лист1 строке А3 по BQ3 найти Out traffic, скопировать столбец в котором находится Out traffic и вставить его в Книга2.xls лист1 столбец С:С
Затем в Книга3.xls лист1 строке А3 по BQ3 найти in- traffic, скопировать столбец в котором находится In traffic и вставить его в Книга2.xls лист1 столбец D:D
Vceznayka вне форума Ответить с цитированием
Старый 15.11.2011, 11:17   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Недосмотрел.
Чтобы выделить(скопировать) столбец замените
Код:
Cells(3, i).Select
на
Код:
Columns(i).Select
или
Код:
Columns(i).Copy
ну, а дальше уже делайте с этими значениями что хотите))
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 15.11.2011, 11:47   #8
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию

VictorM Огромное спасибо !!!
Vceznayka вне форума Ответить с цитированием
Старый 15.11.2011, 12:30   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Используя Find по строке было бы быстрее, и код чуть короче. Буквально вчера пример поиска был: http://www.programmersforum.ru/showthread.php?t=173594

Вот, на примере Виктора:
Код:
Sub tt()
    Dim x As Range, n
    n = 1 'Искомый элемент
    Set x = Rows(3).Find(n, , , xlWhole)
    If Not x Is Nothing Then
        x.Select
    End If
End Sub
Вернее лучше так, а то при наличии нескольких значений переходит не к первому, а к второму (!):
Код:
Sub tt()
    Dim x As Range, n
    n = 1    'Искомый элемент
    Set x = [a3:q3].Find(What:=n, after:=[q3], LookAt:=xlWhole)
    If Not x Is Nothing Then
        x.Select
    End If
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 15.11.2011 в 13:04.
Hugo121 вне форума Ответить с цитированием
Старый 15.11.2011, 15:26   #10
Djeki
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 136
По умолчанию

Развивая эту тему позвольте задать ещё один вопрос. Если в заданном диапазоне несколько раз встречается искомый элемент, и необходимо после первого найденного значения продолжить поиск и найти все последующие искомые элементы в заданном диапазоне а так же вывести в окно Отладки адреса этих найденных ячеек ??
Вот что то типа такого, но по всему заданному диапазону..
Цитата:
Sub tt()
Dim x As Range, n
n = "s55" 'Искомый элемент
Set x = [A4:T11].Find(n, , , xlWhole)
If Not x Is Nothing Then
x.Select
Debug.Print x.Address
End If
End Sub
Спасибо за ответ..
Djeki вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно проверить интерполяционным методом наличие элемента affectus Помощь студентам 0 10.06.2011 18:16
Проверка на наличие общих ячеек диапазонов Miguel Sanchez Microsoft Office Excel 6 19.04.2011 08:15
Проверка на наличие файла ruavia3 Microsoft Office Excel 1 05.02.2010 21:13
Проверка на наличие в массиве istoe Microsoft Office Excel 8 26.08.2009 11:55
Проверка на наличие таблицы в БД Ramires БД в Delphi 3 18.12.2008 08:59