Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba / 25 сообщений из 88, страница 1 из 4
04.05.2011, 16:38
    #37245801
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Возник вопрос.У меня есть ОТЧЕТ и ИСПОЛ_ФАЙЛ.
У меня есть отфильтрованная таблица в ИСПОЛ_ФАЙЛ. Мне нужно итог (количество по столбцу)с этой таблицы вытащить в ОТЧЕТ.
Потом внвь отфильтровать таблицу с ИСПОЛ_ФАЙЛ и слудующие итоги вновь в другую ячейку все того же ОТЧЕТА. Как это сделать. Большое спасибо за помощь.)
не могу делать формулами, так как очень большой обем файлов, которые используються в отчете. Их 6 штук. И мне надо, что бы по очереди открывались файлы и сортировались и итоги вписывались в отчет.(

фильтрация для Casco

Sub Sort_Casco()
ActiveSheet.ListObjects("Лист3").Range.AutoFilter Field:=5, Criteria1:="Casco"
End Sub

теперь нужна функция которая будет брать отсортированные данные итог по количеству в столбце 5 и итог по сумме в столбце 2 и заносить в другую книгу. Именно значения, а не формулу! Т.к. далее мне нужно сортировать по следующему критерию.

фильтрация для Other

Sub Sort_Other()
ActiveSheet.ListObjects("Лист3").Range.AutoFilter Field:=5, Criteria1:="Other"
End Sub

Кто подскажет может это еще можно сделать в цикле?
Прикрепляю файлы Книга 3 и Книга 4
...
Рейтинг: 0 / 0
04.05.2011, 16:38
    #37245802
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,
...
Рейтинг: 0 / 0
04.05.2011, 16:39
    #37245805
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,
...
Рейтинг: 0 / 0
04.05.2011, 20:23
    #37246215
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,

ИМХО использовать здесь фильтры это гемор. Проще вытянуть данные с помощью SQL-запроса:
У меня Office 2003, так что вам придётся немного поправить под себя.
...
Рейтинг: 0 / 0
05.05.2011, 11:12
    #37246836
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Cursky,
Спасибо большое. Только у меня возник еще один вопросик. Как включить еще два фильтра по
Дата настання страхового випадку и Дата реєстрацiї страхового випадку в Книге 4. К примеру
Дата настання страхового випадку>1/09/2009 и Дата реєстрацiї страхового випадку> 1/01/2010.
Тогда по Сasco кол-во 2 и сумма 8393,35. Я просто вообще зеленка в SQL. Спасибо за подмогу.
...
Рейтинг: 0 / 0
05.05.2011, 12:48
    #37247101
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,
Да еще вопросик. Количество посчитано, а вот как считать сумму Резерв RBNS на кiнець перiоду?
...
Рейтинг: 0 / 0
05.05.2011, 14:38
    #37247437
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,
Помогите новичку пжл. Спасибо )))
...
Рейтинг: 0 / 0
05.05.2011, 17:02
    #37247962
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Подскажите, что не правильно пишу? И можно ли так писать для добавления условий в запрос
Sub test()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim strSQL As String
Dim strCriterion As String
Dim strField As String
Dim strRange As String
Dim strPath As String
Dim strOperator1 As String
Dim strOperator2 As String
Dim strOperator3 As String
strOperator1 = "="
strOperator2 = ">"
strOperator3 = ">"


strPath = "c:\Gorokh\Report\Книга4.xls"
Dim x As Integer
strField1 = "segment вид UNIQA"
strField2 = "Дата настання страхового випадку"
strField3 = "Дата реєстрацiї страхового випадку"
strCriterion1 = "Casco"
strCriterion2 = 40179
strCriterion3 = 40179
strRange = ""
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" and [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"



x = rst.Fields(0)
Debug.Print x
rst.Close
cnn.Close

Set rst = Nothing
Set cnn = Nothing
End Sub
...
Рейтинг: 0 / 0
05.05.2011, 17:04
    #37247972
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVikчто не правильно пишу?
а что неправильно выходит? какая ошибка?
...
Рейтинг: 0 / 0
05.05.2011, 17:29
    #37248039
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Shocker.Pro,

Присылаю все скопированное, догадываюсь, что не правильно пишу ту часть где указываються критерии. С одним можно так, а с несколькими наверное не верно. Там где выделила синим выделяет крассным, когда пишу в коде

Option Explicit

Sub AddReferences()
'---------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------
On Error Resume Next
'Name: ADODB
'Description: Microsoft ActiveX Data Objects 2.8 Library
ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado15.dll")
ThisWorkbook.VBProject.References.AddFromGuid GUID:="{2A75196C-D9EB-4129-B803-931327F72D5C}", Major:=2, Minor:=8
End Sub

Function GetData(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strField3 As String, strOperator3 As String, strCriterion3 As String) As Integer
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim strSQL As String

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 9.0;HDR=Yes;IMEX=1"""
' и это не работает
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" and [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
rst.Open strSQL, cnn
GetData = rst.Fields(0)
rst.Close
cnn.Close

Set rst = Nothing
Set cnn = Nothing
End Function


Sub test()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim strSQL As String
Dim strCriterion As String
Dim strField As String
Dim strRange As String
Dim strPath As String
Dim strOperator1 As String
Dim strOperator2 As String
Dim strOperator3 As String
strOperator1 = "="
strOperator2 = ">"
strOperator3 = ">"


strPath = "c:\Gorokh\Report\Книга4.xls"
Dim x As Integer
strField1 = "segment вид UNIQA"
strField2 = "Дата настання страхового випадку"
strField3 = "Дата реєстрацiї страхового випадку"
strCriterion1 = "Casco"
strCriterion2 = 40179
strCriterion3 = 40179
strRange = ""
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
strSQL = "SELECT * table Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" and [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
' как написать запрос для того что бы отбирало количество по segment вид UNIQA, а также по Дата настання страхового випадку>1/1/2010 и Дата реєстрацiї страхового випадку>1/1/2010 одновременно?


rst.Open strSQL, cnn


x = rst.Fields(0)
Debug.Print x
rst.Close
cnn.Close

Set rst = Nothing
Set cnn = Nothing
End Sub
...
Рейтинг: 0 / 0
05.05.2011, 17:38
    #37248066
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVikТам где выделила синим выделяет крассным, когда пишу в коде
красным выделяет ошибки синтаксиса.
Подозреваю, что ты пишешь это в несколько строк так же, как и выкладываешь сюда.
...
Рейтинг: 0 / 0
05.05.2011, 18:09
    #37248154
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Подскажите все таки где синтаксическая ошибка.
Где-то встроке ниже... И вообще скажите сам запрос верный для трех критериев?
Буду очень и очень благодарна.


strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" and [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
...
Рейтинг: 0 / 0
05.05.2011, 18:11
    #37248158
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,

нет пишу в одну, но выдает синтаксическую ошибку, когда пишу несколько критериев. я не знаю точно правил записи в SQL, поэтому и спрашиваю
...
Рейтинг: 0 / 0
05.05.2011, 18:24
    #37248189
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVikVikVikVik,

нет пишу в одну, но выдает синтаксическую ошибку, когда пишу несколько критериев. я не знаю точно правил записи в SQL, поэтому и спрашиваю

ты запуталась в кавычках.
давай все-таки в одной ветке
...
Рейтинг: 0 / 0
05.05.2011, 20:22
    #37248332
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
У вас там были лишние кавычки перед and: strCriterion1 & "'" and ["
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Sub test()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL As String
    Dim strCriterion As String
    Dim strField As String
    Dim strRange As String
    Dim strPath As String
    Dim strOperator1 As String
    Dim strOperator2 As String
    Dim strOperator3 As String
    Dim x As Integer
    
    strOperator1 = "="
    strOperator2 = ">"
    strOperator3 = ">"
    strPath = "c:\Gorokh\Report\Книга4.xls"
    strField1 = "segment вид UNIQA"
    strField2 = "Дата настання страхового випадку"
    strField3 = "Дата реєстрацiї страхового випадку"
    strCriterion1 = "Casco"
    strCriterion2 =  40179 
    strCriterion3 =  40179 
    strRange = ""
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
    strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & _
                "WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 _
                & "' and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 _
                & "' and [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
Debug.Print strSQL

    rst.Open strSQL, cnn
    x = rst.Fields( 0 )
Debug.Print x
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
End Sub

Debug.Print strSQL:
Код: plaintext
SELECT Count([segment вид UNIQA]) FROM [Лист3$A3:L1000] WHERE [segment вид UNIQA]='Casco' and [Дата настання страхового випадку]>'40179' and [Дата реєстрацiї страхового випадку]>'40179'
...
Рейтинг: 0 / 0
06.05.2011, 11:15
    #37249168
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
О, Спасибо Всем Работает!!!
Только вот функция пользовательская в книге3 выдает ошибку #ЗНАЧ!
=GetData("c:\Gorokh\Report\Книга4";"segment вид UNIQA";"=";A6;"Дата настання страхового випадку";">";40092;"Дата реєстрацiї страхового випадку";">";40179)

Еще раз ОГРОМНОЕ СПАСИБО!!!



Function GetData(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strField3 As String, strOperator3 As String, strCriterion3 As String) As Integer
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim strSQL As String

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 9.0;HDR=Yes;IMEX=1"""

strSQL = "SELECT * from Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" And " [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" And "[" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
rst.Open strSQL, cnn

GetData = rst.Fields(0)
rst.Close
cnn.Close

Set rst = Nothing
Set cnn = Nothing
End Function
...
Рейтинг: 0 / 0
06.05.2011, 11:39
    #37249259
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Выполни эту же строку в Immediate-окне и посмотри, какую ошибку выдает.
Только запятые вместо точек с запятой и вместо A6 - конкретное значение подставь

Код: plaintext
?GetData("c:\Gorokh\Report\Книга4","segment вид UNIQA","=", 55555 ,"Дата настання страхового випадку",">", 40092 ,"Дата реєстрацiї страхового випадку",">", 40179 )
...
Рейтинг: 0 / 0
06.05.2011, 13:17
    #37249519
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Выдает ошибку Type mismatch. Вообщем пишет ошибка 13.
В Debuge выделяет строку
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" And " [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" And "[" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
...
Рейтинг: 0 / 0
06.05.2011, 14:13
    #37249656
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVikВыдает ошибку Type mismatch. Вообщем пишет ошибка 13.
В Debuge выделяет строку
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" And " [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" And "[" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"

я уже отвечал - в этой строке проблема с "and". Если этот And должен быть внутри sql-запроса - то он должен быть и внутри кавычек
...
Рейтинг: 0 / 0
06.05.2011, 15:15
    #37249814
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Shocker.Pro,
Cпасибо, виновата там подправила, но возникла другая ошибка. :(
compile error
expected: expression
...
Рейтинг: 0 / 0
06.05.2011, 15:24
    #37249839
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Код: plaintext
1.
2.
strSQL =
"SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" & " And [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" & " And [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
...
Рейтинг: 0 / 0
06.05.2011, 15:28
    #37249851
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Ну может всё-таки покажете наконец Debug.Print strSQL ??
...
Рейтинг: 0 / 0
06.05.2011, 15:32
    #37249862
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVikShocker.Pro,
Cпасибо, виновата там подправила, но возникла другая ошибка. :(
compile error
expected: expression
Блин, ну сколько можно клещами вытягивать??????
Поправила - ну покажи, что напоправила!!!!!!!!!!!!!!!!!! Нам угадать надо что ли?

GwaНу может всё-таки покажете наконец Debug.Print strSQL ??
да не может она показать, не проходит у нее компиляция этой строки, нее может она никак с кавычками разобраться
...
Рейтинг: 0 / 0
06.05.2011, 15:47
    #37249891
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
Спасибки. :) Уже как-то работает.))) Правда выводит нули в самой в функции в листе. Если нажимаю Enter, то вновь стоит #ЗНAЧ! и не пойму почему выводит нули, если все даты подправила и в коде и в самой функции на листе?
...
Рейтинг: 0 / 0
06.05.2011, 15:49
    #37249897
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация в Vba
VikVikVik,

*смайлик, бьющися головой об стену*

Потому что где-то что-то неправильно.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba / 25 сообщений из 88, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]