powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba
25 сообщений из 88, страница 1 из 4
Фильтрация в Vba
    #37245801
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник вопрос.У меня есть ОТЧЕТ и ИСПОЛ_ФАЙЛ.
У меня есть отфильтрованная таблица в ИСПОЛ_ФАЙЛ. Мне нужно итог (количество по столбцу)с этой таблицы вытащить в ОТЧЕТ.
Потом внвь отфильтровать таблицу с ИСПОЛ_ФАЙЛ и слудующие итоги вновь в другую ячейку все того же ОТЧЕТА. Как это сделать. Большое спасибо за помощь.)
не могу делать формулами, так как очень большой обем файлов, которые используються в отчете. Их 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
Фильтрация в Vba
    #37245802
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37245805
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37246215
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

ИМХО использовать здесь фильтры это гемор. Проще вытянуть данные с помощью SQL-запроса:
У меня Office 2003, так что вам придётся немного поправить под себя.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37246836
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
Спасибо большое. Только у меня возник еще один вопросик. Как включить еще два фильтра по
Дата настання страхового випадку и Дата реєстрацiї страхового випадку в Книге 4. К примеру
Дата настання страхового випадку>1/09/2009 и Дата реєстрацiї страхового випадку> 1/01/2010.
Тогда по Сasco кол-во 2 и сумма 8393,35. Я просто вообще зеленка в SQL. Спасибо за подмогу.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37247101
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,
Да еще вопросик. Количество посчитано, а вот как считать сумму Резерв RBNS на кiнець перiоду?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37247437
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,
Помогите новичку пжл. Спасибо )))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37247962
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, что не правильно пишу? И можно ли так писать для добавления условий в запрос
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
Фильтрация в Vba
    #37247972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikчто не правильно пишу?
а что неправильно выходит? какая ошибка?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37248039
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Фильтрация в Vba
    #37248066
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikТам где выделила синим выделяет крассным, когда пишу в коде
красным выделяет ошибки синтаксиса.
Подозреваю, что ты пишешь это в несколько строк так же, как и выкладываешь сюда.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37248154
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите все таки где синтаксическая ошибка.
Где-то встроке ниже... И вообще скажите сам запрос верный для трех критериев?
Буду очень и очень благодарна.


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

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

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

ты запуталась в кавычках.
давай все-таки в одной ветке
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37248332
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас там были лишние кавычки перед 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
Фильтрация в Vba
    #37249168
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, Спасибо Всем Работает!!!
Только вот функция пользовательская в книге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
Фильтрация в Vba
    #37249259
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполни эту же строку в Immediate-окне и посмотри, какую ошибку выдает.
Только запятые вместо точек с запятой и вместо A6 - конкретное значение подставь

Код: plaintext
?GetData("c:\Gorokh\Report\Книга4","segment вид UNIQA","=", 55555 ,"Дата настання страхового випадку",">", 40092 ,"Дата реєстрацiї страхового випадку",">", 40179 )
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249519
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 & "'"
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249656
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Фильтрация в Vba
    #37249814
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Cпасибо, виновата там подправила, но возникла другая ошибка. :(
compile error
expected: expression
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249839
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Фильтрация в Vba
    #37249851
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну может всё-таки покажете наконец Debug.Print strSQL ??
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249862
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,
Cпасибо, виновата там подправила, но возникла другая ошибка. :(
compile error
expected: expression
Блин, ну сколько можно клещами вытягивать??????
Поправила - ну покажи, что напоправила!!!!!!!!!!!!!!!!!! Нам угадать надо что ли?

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

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

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


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