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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2014, 17:18   #1
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию Выборка в диапазоне значения по заданному промежутку и перенести на другой лист excel vba

Уважаемые форумчане!

Пожалуйста, подскажите как сделать выборку значений в диапазоне по заданному промежутку. (Из-за отсутствия функции between, не знаю как это решается).
Диапазон включает в себя 3 столбца.
После выборки, в каждой строке этого диапазона нужно определить минимальное значение и перенести это минимальное значение на лист results так же (т.е. если минимальное значение из 1-го столбца диапазона, то и перенести его в 1-й и т.д.)
Файл в скрепке (попытка начала кода).
Вложения
Тип файла: rar Тест.rar (38.0 Кб, 14 просмотров)
ac1-caesar вне форума Ответить с цитированием
Старый 27.10.2014, 18:46   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

наверное тут опечатка:
Код:
If cell.Value <= Me.TextBoxFrom.Value ...
If cell.Value >= Me.TextBoxFrom.Value ...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.10.2014, 18:52   #3
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
наверное тут опечатка:
Согласен, принимается.
ac1-caesar вне форума Ответить с цитированием
Старый 27.10.2014, 19:05   #4
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

У меня получается вставляет по три значения в столбец. Т.е. если строка попадает в выбираемый промежуток, то вставляет значение столбца "DY", "FH" и "FC".
ac1-caesar вне форума Ответить с цитированием
Старый 27.10.2014, 19:05   #5
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
Из-за отсутствия функции between
А куда ж она делась?
Никто не мешает написать запрос к листу с between
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 27.10.2014, 19:20   #6
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Подскажите как?
ac1-caesar вне форума Ответить с цитированием
Старый 27.10.2014, 19:26   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я думаю, если бы кто-то понял что нужно сделать - уже выложили бы готовый код
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.10.2014, 20:15   #8
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

к примеру промежуток задан от -20 до 30:
на листе main в первой строке
в колонке "TASK NUMBER" - 278211-L505-1
в колонке "DESCRIPTION" - CONTROL UNIT-SLAT
в колонке "DY" - (-18)
в колонке "FH" - (28)
в колонке "FC" - (123)

в соответствии с заданным промежутком эта строка попадает под наш выбор так как минимальное значение в просматриваемом диапазоне -18.

Теперь на листе results эта строка должна отобразиться так:
в первой колонке - 278211-L505-1
во второй - (18)
в третьей - ""
в четвертой - ""

и так по всей таблице
ac1-caesar вне форума Ответить с цитированием
Старый 27.10.2014, 20:22   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а это попадает
в колонке "DY" - (28)
в колонке "FH" - (-18)
в колонке "FC" - (123)
в тот же диапазон?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.10.2014, 20:26   #10
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
Сообщение от ac1-caesar Посмотреть сообщение
Подскажите как?
Просто принцип из другого решения:
Код:
Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean, Optional TypeBase As Long = 0, Optional ColumnDelimeter As String = ",")
Abs
'==============================================================================
'* Автор R Dmitry
'==============================================================================
Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
If FieldsName Then FieldName = "Yes" Else FieldName = "No"

If TypeBase > 0 Then
    sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    If TypeBase = 1 Then sCon = sCon & FilePath & ";User Id=admin;Password=;" 'Access
   'If TypeBase = 2 Then sCon = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & FilePath
    If TypeBase = 2 Then sCon = sCon & FilePath & ";Extended Properties=dBASE IV;User ID=Admin;Password=;" 'DBF
    'If TypeBase = 3 Then sCon = sCon & FilePath & ";Extended Properties=text;HDR=" & FieldName & ";FMT=Delimited " & ColumnDelimeter 'TXT
    If TypeBase = 3 Then sCon = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & FilePath & ";Extensions=asc,csv,tab,txt;"
Else
    Select Case Val(Application.Version)
        Case Is < 12
            sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
              & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
        Case 12, 14
            sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
            & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
    End Select
End If
cn.Open sCon
If Not cn.State = 1 Then Exit Function
Set rs = cn.Execute(StrSql)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i = 0 To rs.Fields.Count - 1
    OutputRange.Offset(0, i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset(1, 0)
 End If
 DoEvents
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function

Sub test()
Dim strSql2$
Dim Lr&
Lr = Cells(Rows.Count, 1).End(xlUp).Row
If Lr < 3 Then Lr = 3
Range("a3:q" & Lr).ClearContents
strSql2 = "select * from [Янв_Февр$] where [Код товара]like '%" & [a2].Value & "%'"
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets("Поиск").[a3], True, False)
End Sub

Sub test2()
Dim strSql2$
Dim Lr&
Lr = Cells(Rows.Count, 1).End(xlUp).Row
If Lr < 3 Then Lr = 3
Range("a3:q" & Lr).ClearContents
strSql2 = "select * from [Мар_Апр$] where [Код товара]like '%" & [a2].Value & "%'"
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets("Поиск").[a3], True, False)
End Sub
Если уж хочешь запросом.
Лично мне проще было бы загнать в массив и выбрать.
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Занести значения в другой лист по условию umka777_89 Microsoft Office Excel 5 09.06.2013 20:36
расчет по заданному промежутку времени johny_03 Microsoft Office Excel 2 20.12.2011 17:02
Выборка данных, перенос строки на другой лист) Viten2 Microsoft Office Excel 1 03.05.2011 16:14
Поиск повторяющегося значения и вывод его на другой лист tissot Microsoft Office Excel 6 20.01.2011 19:23
Выборка данных для переноса на другой лист. Kot9ra Microsoft Office Excel 1 14.10.2010 22:05