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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2009, 22:48   #1
МаргариткА
Новичок
Джуниор
 
Регистрация: 06.12.2009
Сообщений: 2
Стрелка Поиск по интервалам VBA

Подскажите,пожалуиста,как написать программу (на VBA for Application) поиска в интервале! Например,в ячеиках A,таб.Exel, записаны цены,нужно в другую таблицу вывести все цены от 500-800, или вариант,когда от 1000 или до 1000.
МаргариткА вне форума Ответить с цитированием
Старый 06.12.2009, 22:51   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Пример файла сделаете - попробуем помочь
EducatedFool вне форума Ответить с цитированием
Старый 06.12.2009, 23:03   #3
МаргариткА
Новичок
Джуниор
 
Регистрация: 06.12.2009
Сообщений: 2
По умолчанию

Вот моя программа полностью!
Код:
Private Sub Поиск_Click()
Dim i, j, a, b, c, d, e As Integer
  Dim vid, country, nax, r As String
     Dim star As Integer
       Dim Data As Date
          Dim prise1, prise2 As Currency
  kol = 5
  i = 6
  a = 0
  b = 0
  c = 0
  d = 0
  e = 0
  vid = ""
  country = ""
  
  
 
  
If Form_Поиск.CheckBox1.Value = True Then
 a = 1
 vid = ComboBox1.Value
End If

If Form_Поиск.CheckBox6.Value = True Then
 b = 1
 country = TextBox3.Value
End If
If Form_Поиск.CheckBox4.Value = True Then
 c = 1
 star = ComboBox3.Value
End If
If Form_Поиск.CheckBox3.Value = True Then
 d = 1
 Data = ComboBox4.Value
End If
If Form_Поиск.CheckBox5.Value = True Then
 e = 1
 prise1 = TextBox1.Value
 prise2 = TextBox2.Value
 
 nax = 1
 r = Application.CountA(Sheets("База данных").Range("O:O")) + 1
 For i = 1 To r
 If Cells(i, 16) > nax Then
 nax = Cells(i, 16)
 End If
 Next i
 
 If prise2 = 0 Then prise2 = nax
 
End If


For j = 1 To 15
 Worksheets("Поиск").Cells(5, j) = Worksheets("База данных").Cells(5, j)
Next j

Do While Worksheets("База данных").Cells(i, 1) <> ""
  If ((Worksheets("База данных").Cells(i, 3)) = vid Or (a = 0)) Then
  If ((Worksheets("База данных").Cells(i, 4)) = country Or (b = 0)) Then
  If ((Worksheets("База данных").Cells(i, 6)) = star Or (c = 0)) Then
  If ((Worksheets("База данных").Cells(i, 11)) = Data Or (d = 0)) Then
  If (((Worksheets("База данных").Cells(i, 16)) >= prise1 And (Worksheets("База данных").Cells(i, 16)) <= prise2) Or (e = 0)) Then
  kol = kol + 1
     For j = 1 To 15
     Worksheets("Поиск").Cells(kol, j) = Worksheets("База данных").Cells(i, j)
     Next j
End If
End If
End If
End If
End If
   
   i = i + 1
   
Loop
  Worksheets("Поиск").Activate

End
End Sub

Private Sub UserForm_Initialize()
   Row = Application.CountA(Sheets("Критерии").Range("a:a"))
   For i = 1 To Row
   ComboBox1.AddItem Worksheets("Критерии").Cells(i, 1)
Next i
  Row = Application.CountA(Sheets("Критерии").Range("b:b"))
   For i = 1 To Row
   ComboBox3.AddItem Worksheets("Критерии").Cells(i, 2)
Next i
   Row = Application.CountA(Sheets("Критерии").Range("d:d"))
   For i = 1 To Row
   ComboBox4.AddItem Worksheets("Критерии").Cells(i, 4)
Next i
   
           ComboBox1.Value = Worksheets("Критерии").Cells(1, 1)
        
       ComboBox3.Value = Worksheets("Критерии").Cells(1, 3)
     ComboBox4.Value = Worksheets("Критерии").Cells(1, 4)
  
   
Worksheets("Поиск").Range("A6:O200").Clear
End Sub

Последний раз редактировалось EducatedFool; 06.12.2009 в 23:16.
МаргариткА вне форума Ответить с цитированием
Старый 06.12.2009, 23:18   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А сам файл вместе с формой Вы предлагаете воссоздать нам?

Зачем вообще форма?
Достаточно 3 строки кода: (параметры фильтрации можно поместить в ячейки листа - к примеру, в соседние столбцы)
1) применяем к листу автофильтр (с нужными критериями)
2) копируем оставшиеся видимыми строки на другой лист
3) снимаем фильтрацию

PS: Можно применить расширенный фильтр (из встроенных средств excel) - тогда программа будет длиной в одну строку кода...
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в VBA, поиск макросов. Ант@н Помощь студентам 1 17.11.2009 12:17
поиск через VBA Tirendus Microsoft Office Excel 8 31.07.2009 13:49
подсчет значений, удовлетворяющих интервалам treim Microsoft Office Excel 2 22.11.2008 13:37
Поиск в VBA Excel на листе luxery Microsoft Office Excel 1 10.11.2008 08:38
[vba]поиск по сторокам в excel CJartem Microsoft Office Excel 9 19.05.2008 11:31