Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

проблема с поиском с помощью цикла

Автор kovalevskivf, 20.03.2011, 23:26

« назад - далее »

kovalevskivf

Доброго времени суток всем. Помогите решить проблему с поиском нужной информации в ячейках на рабочем листе. Имеется таблица с информацией на листе, типа небольшой базы данных. Информация разнародная, но каждой записи присвоил идентификатор. Записи я ищу с помощью цикла по идентификатору. Мне необходимо собрать из всех записей только те, которые соответствуют определенному идентификатору и затем вставить их по порядку в на другой лист книги. Проблема в том что найти нужную запись по идентификатору с помощью цикла For-Next я могу, а вот вставить их по порядку (1.2.3. и тд.) в другую таблицу не получается. Ломаю голову целый день, ничего путного не вышло, кроме примитивной и огромной конструкции, типа:
For i = 1 To 100
  If Sheets("Лист1").Cells(i, 3) = "к" Then
       If Sheets("Лист2").Cells(8, 1) = "" Then
         Sheets("Лист2").Cells(8, 1) = Sheets("Лист1").Cells(i, 3)
         GoTo метка1:
       End If
       If Sheets("Лист2").Cells(9, 1) = "" Then
         Sheets("Лист2").Cells(9, 1) = Sheets("Лист1").Cells(i, 3)
          GoTo метка1:
       .... и т.д.
       Последний кусок:
       If Sheets("Лист2").Cells(50, 1) = "" Then
         Sheets("Лист2").Cells(50, 1) = Sheets("Лист1").Cells(i, 3)
         GoTo метка2
       End If
   End If
метка1:
Next i
метка2:

Конструкция эта работает хорошо, но очень неуклюжая. А мне подобных манипуляций в моей программе приходится делать очень много. Кто может подсказать, как тут лучше сделать. Заранее спасибо.

sergo44441

Тут без примера сложно, выложите фрагментик, и поподробнее опишите, что нужно сделать, Я бы постарался сделать без меток,
Не торопись, и все успеешь намного быстрее

_Boroda_

А если так:
For i = 1 To 100
   If Sheets("Лист1").Cells(i, 3) = "к" Then
      n_ = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row + 1
      Sheets("Лист2").Cells(n_, 1) = Sheets("Лист1").Cells(i, 3)
   End If
Next i
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

kovalevskivf

Цитата: _Boroda_ от 21.03.2011, 00:09
А если так:
For i = 1 To 100
   If Sheets("Лист1").Cells(i, 3) = "к" Then
      n_ = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row + 1
      Sheets("Лист2").Cells(n_, 1) = Sheets("Лист1").Cells(i, 3)
   End If
Next i

Спасибо за помощь. Не совсем понимаю суть этого кода, но кажется он мне не подайдет. Вылаживаю конкретный фрагмент моей проблемы. Может так будет более понятно.

Wasilic

Цитата: kovalevskivf от 21.03.2011, 00:42
Не совсем понимаю суть этого кода, но кажется он мне не подайдет.
Если не понятно - не значит что не подойдет!
Вот еще пример в действии!
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

kovalevskivf

ЦитироватьЕсли не понятно - не значит что не подойдет!
Все правильно. Разобрался с сутью Вашего подхода. Огромное спасибо за помощь, Вы мне очень помогли.