powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba
88 сообщений из 88, показаны все 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
Фильтрация в Vba
    #37249905
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,
Вам бы в партизаны: хрен бы враги из Вас что-нибудь вытянули ..
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249913
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
Option Explicit

Sub AddReferences()
'---------------------------------------------------------------------------------------
' Procedure : AddReferences
' Purpose   : Ïîäêëþ÷àåì ññûëêó íà ADO (Òà, ÷òî â ìåíþ Tools->References)
'---------------------------------------------------------------------------------------
    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 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 & "'"
     'ðàáîòàåò
    'strSQL = "SELECT  Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "  && [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & " && [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
    
    strSQL = "SELECT Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" & " And [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" & " And [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
    '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 strCriterion1 As String
    Dim strCriterion2 As String
    Dim strCriterion3 As String
    
    

    Dim strField1 As String
    Dim strField2 As String
    Dim strField3 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 = 39877
    strCriterion3 = 40180
    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
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249924
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не партизаню. Простно наверное моих знаний и навыков маловато...
Это мой первый запрос в жизни...)))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249947
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и как мы без самой книги посмотрим, почему там нули?
Ладно, мне что-то надоела эта ветка, если автор себе не хочет помочь, нкто ему не поможет.

ЗЫ: Для оформления кода используйте тэги SRC, а не FIXED и почитайте правила форума
ЗЗЫ: Чтобы нормально вставлять русский текст на форум - почитайте эту тему: Вставка из буфера русского текста - крокозяблы.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249971
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот две книги. Не топите :)
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249995
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37250008
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, а то без ваших советов совсем как-то плохо....
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37254807
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Если меняю на "Excel 9.0" то все равно не работает для 2007 Excel. (((
В 2007 не определяет пользовательскую функцию...
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37254819
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255291
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Уговорили, сейчас установлю Office 2007 на VM и попробую что-нибудь придумать. А вы, чтобы не терять зря время, можете пока почитать вот эту статью:
http://forums.asp.net/t/1169005.aspx/1?How+to+read+from+excel+2007+format+file+
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255656
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
Золотой Вы человек. :)
Читала статью. Попыталась вместо Provider=Microsoft.Jet.OLEDB.4.0 написать Provider=Microsoft.Jet.OLEDB.12.0.
Для этого по ссылке попыталась скачать файл.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891
Он скачивается, однако не запускается...
Поэтому мои строки пока бесполезные...
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255794
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Какой ещё Microsoft.Jet.OLEDB.12.0? Вот же Connection String:авторTry using the connection string like below..

strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & serverPath & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"""
Осталось только немного подправить под себя (вместо HDR=NO у нас HDR=YES):
Код: plaintext
1.
2.
3.
    Dim strConnectionString as String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & _
                                             "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
И всё. Процедура test работает.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255822
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Это понятно, что если есть заголовки? то HDR=YES/
Не запускает test : Несоответсвие типов данных в выражении условия отбора
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255828
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255833
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот последний мой вариант...
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255880
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Раскоментируем строчки с условиями и запишем дату вот в таком виде
Код: plaintext
1.
2.
strCriterion1 = "Casco"
strCriterion2 = # 10 / 6 / 2009 #
strCriterion3 = # 1 / 27 / 2010 #
а в строке запроса тогда уберём одинарные кавычки перед датами
Код: plaintext
1.
2.
3.
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
         & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
         & strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
         & strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Debug.Print strSQL
Debug.Print x

Код: plaintext
1.
SELECT Count([segment вид UNIQA]) FROM [Лист3$A3:L1000] WHERE [segment вид UNIQA]='Casco' and [Дата настання страхового випадку]>= 10 / 6 / 2009  and [Дата реєстрацiї страхового випадку]>= 1 / 27 / 2010 
  3  
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37256913
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

А вот эти кавычки тоже (насколько понимаю) не нужны?

strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
& strField1 & "]" & strOperator1 & " ' " & strCriterion1 & " ' and [" _
& strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
& strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Все равно выдает :
число содержит синтаксическую ошибку в выражении запроса
И еще вопрос-это я считала количество записей, а как вот эту сумму, что выделена красным в Книге4 подтягивать?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37256916
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37257381
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

*смайлик, бьющися головой об стену*
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37257536
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurskyVikVikVik,

Раскоментируем строчки с условиями и запишем дату вот в таком виде
Код: plaintext
1.
2.
strCriterion1 = "Casco"
strCriterion2 = # 10 / 6 / 2009 #
strCriterion3 = # 1 / 27 / 2010 #
а в строке запроса тогда уберём одинарные кавычки перед датами
Код: plaintext
1.
2.
3.
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
         & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
         & strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
         & strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Debug.Print strSQL
Debug.Print x

Код: plaintext
1.
SELECT Count([segment вид UNIQA]) FROM [Лист3$A3:L1000] WHERE [segment вид UNIQA]='Casco' and [Дата настання страхового випадку]>= 10 / 6 / 2009  and [Дата реєстрацiї страхового випадку]>= 1 / 27 / 2010 
  3  


Было нашла а потом вновь закрыла окно, которое вы вставили внизу. Какими клавишами оно вызывается или где? Спс
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37258057
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikCursky,

А вот эти кавычки тоже (насколько понимаю) не нужны?

strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
& strField1 & "]" & strOperator1 & " ' " & strCriterion1 & " ' and [" _
& strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
& strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Все равно выдает :
число содержит синтаксическую ошибку в выражении запроса
И еще вопрос-это я считала количество записей, а как вот эту сумму, что выделена красным в Книге4 подтягивать?
Та шо ж такое, ну? Вот горе мне с вами. То были нужные кавычки, не надо их удалять.
Чтобы вычислить сумму, вместо
Код: plaintext
Count([имя поля])
напишите
Код: plaintext
Sum([имя поля])
Чтобы увидеть Immediate Window нажмите Ctrl + G
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37258755
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Спасибо за кавычки :) Не знаю как бы и жила без Вас.
К сожелению выдает все ту же ошибку(((
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37259582
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky, СПАСИБО БОЛЬШОЕ
Ха-ха-ха получилось
Только вот не могу понять как вот красную часть написать для strSQL2.
Дело в том, что у меня либо strSQL1 возвращает либо strSQL2.
А когда пишу и то и другое, то пишет: Операция не допускается, оесли обект открыт 3705 ошибка

Код: 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.
 
       strSQL1 = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
        & strField1 & "]" & strOperator1 & "'Casco' and [" _
        & strField2 & "]" & strOperator2 & " #3/5/2009# and [" _
        & strField3 & "]" & strOperator3 & "#1/2/2010#"
         
        strSQL2 = "SELECT Sum([" & strField4 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
        & strField1 & "]" & strOperator1 & "'Casco' and [" _
        & strField2 & "]" & strOperator2 & " #3/5/2009# and [" _
        & strField3 & "]" & strOperator3 & "#1/2/2010#"

    rst.Open strSQL1, cnn
    x1 = rst.Fields( 0 )
 
    Debug.Print strSQL1
    Debug.Print x1
     
    rst.Close
    cnn.Close
  
    Set rst = Nothing
    Set cnn = Nothing

End Sub

  
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37259845
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
И это получилось. Просто две фунции тест написала ( test1 и test 2)
Теберь мыслю более широко. Как сделать так, чтобы Casco и другие критерии задавались не в коде, а в листе 4 Книги 3. Что бы не лезть каждый раз. И можно было протянуть и соотвественно брались даты с листка и виды страхования и вставлялись в мою пользовательскую функцию...
Буду очень благодарна
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37259991
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikТеберь мыслю более широко. Как сделать так, чтобы Casco и другие критерии задавались не в коде, а в листе 4 Книги 3. Что бы не лезть каждый раз.
Как всегда, это уже обсуждалось и не раз...
Разберите пример.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645711
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Код: vbnet
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Sub test1()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL1 As String

    Dim strCriterion1 As String

 
    Dim strField1 As String
    Dim strField2 As String

    
    Dim strRange As String
    Dim strPath As String
    
    Dim strOperator1 As String

    Dim x1 As Integer
    '--------------------------------------------------------------------------------------------------'
    strOperator1 = "="

    
    strField1 = "Сумма"
    strField2 = "Счет Б"
    strCriterion1 = "29096010605901"
    strPath = "C:\Documents and Settings\vgorokh\Рабочий стол\АВАНС\аванс.xlsm"
    strRange = ""
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
     'strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" "& strOperator1 & " "& strCriterion1 &"
        
        
strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" & strOperator1 & "& strCriterion1 &"
        
    rst.Open strSQL1, cnn
    
    x1 = rst.Fields(0)
    
    Debug.Print strSQL1
    Debug.Print x1
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    
End Sub



Подскажите можно ли писать в запросе strCriterion1?
У меня выводит синтаксическую ошибку в критерии1.
Как написать функцию так, что бы критерий я могла задавать на листе а не в коде?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645834
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрать кавычки вокруг нее
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645838
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proубрать кавычки вокруг нееи ведь в этой же строке используется еще три значения других переменных. Неужели так сложно увидеть? Ведь даже цветом другим выделено.

Внутри кавычек находится ТЕКСТ, который будет передан без изменений.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645846
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

А можно пример
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645864
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

не вижу :(
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645891
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikА можно пример

Код: vbnet
1.
2.
3.
4.
5.
6.
Dim Test As String
Dim K As String
Test = "qqq"

K = Test     'вариант 1
K = "Test"   'вариант 2

Вы понимаете разницу между первым и вторым вариантом и что в каждом случает окажется в переменной K ?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645919
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом варианте будет строка qqq
Во втором варианте будет строка Test
Это обе строки.


'вариант 1 К= "qqq"

'вариант 2 K = "Test"
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645922
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikВ первом варианте будет строка qqq
Во втором варианте будет строка Testзамечательно, а теперь смотрим сюда:
Код: vbnet
1.
strSQL1 = strOperator1 & "& strCriterion1 &"

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

strSQL1 = strOperator1 & "& strCriterion1 &"
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645981
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikя бы в этой записи убралам-да. Я уж попробую добить урок до конца
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim Test As String
Dim K As String
Test = "qqq"

K = Test            'вариант 1
K = "Test"          'вариант 2
K = Test & Test     'вариант 3
K = Test & "Test"   'вариант 4

что по вашему будет в переменной K в варианте 3 и 4?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646100
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

qqqqqq 'вариант 3

qqqTest 'вариант 4
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646114
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Shocker.Proм-да. Я уж попробую добить урок до конца

спасибо большоЕ)))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646130
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikспасибо большоЕтак что, ясно, в чем ошибка?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646141
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

не-а )))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646144
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

раскройте уже тайну))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646145
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
strSQL1 = strOperator1 & "& strCriterion1 &"

Что будет в этом случае в переменной strSQL1? А что должно быть?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646147
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> не-а )))

:)

Добавь после этого
Код: vbnet
1.
2.
strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" & strOperator1 & "& strCriterion1 &"


эту строку:
Код: vbnet
1.
MsgBox strSQL1

и посмотри что получяется

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646162
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Ага спасибо за подсказку

strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
& strField2 & "]" & strOperator1 & "" & strCriterion1 & ""
однако зараза пишет:
Отсутствует одно или несколько требуемых параметров
2. еще такой вопросик. а если мне нужно что бы менялся мой критерия, то я должна просто его закоментировать, а в параметрах функции указать.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646186
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> однако зараза пишет:
> Отсутствует одно или несколько требуемых параметров

Покажи и нам результат
Код: vbnet
1.
MsgBox strSQL1



> 2. еще такой вопросик. а если мне нужно что бы менялся мой критерия, то я должна просто его закоментировать, а в
> параметрах функции указать.

Вот этого я не понял. В какой функции?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646222
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,


1.приложила файлик

2. Хочу пользовательскую функцию которая считала бы сумму по кретерию, который есть на листе (таких критериев целый столбец)

Код: vbnet
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.
Function Avans(strPath As String, strField1 As String, strField2 As String, strOperator1 As String, strCriterion1 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 strSQL1 As String
                                                                            
    'cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 9.0;HDR=Yes;IMEX=1"""
   
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
   
   
     strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" & strOperator1 & "& strCriterion1 &"
 
    rst.Open strSQL1, cnn
   
    Avans = rst.Fields(0)
    rst.Close
    cnn.Close

    Set rst = Nothing
    Set cnn = Nothing
End Function
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646236
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
вот еще перый мсжбокс
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646241
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> 1.приложила файлик

МаладЭц! Картинка в вордовском файле :) И что не понятно в картинке? У тебя закоментировано заполнение переменной
strCriterion1 и поэтому у тебя запрос получается вида:
Код: sql
1.
select * from tbl where field1 = 

Естетсвенно тебе
скажут, что не могЁм сравнить field1 с непонятно чем.

>
> 2. Хочу пользовательскую функцию которая считала бы сумму по кретерию, который есть на листе (таких критериев
> целый столбец)

Ну типа того. Я-бы Integer заменил на Double, а так вроде нормально. За исключением твоей изначальной проблемы, с
которой ты и написала сюда :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646246
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
и что номер счета мне текстом делать?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646252
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

так и так у меня тип Критярия стоит строка
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646266
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> Игорь Горбонос,
> вот еще перый мсжбокс

Тэкс,
для получения текста сообщений можно воспользоватся комбинацией клавишь Ctrl+Shift+C
ИЛИ
дописываешь в нужном месте программы Debug.Print strSQL1, перед запуском нажимаешь Ctrl+G(появляется Immediate Window) и
после исполнения макроса копируешь из Immediate Window то что туда вывелось при помощи Debug.Print.
Так-же есть ещё варианты получения нужного текста, но это оставляю тебе на самоизучение :)
Ты главное не бойся и пробуй тыкать мышкой в разных окнах(в некоторых можно даже значения переменных поменять во время
отладки макроса) в неожиданных местах

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646275
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> так и так у меня тип Критярия стоит строка

И что, что строка? Строка - это просто тип данных, который может содержать переменная, не более того. По умолчанию такие
переменные содержат пустую строку. В запросе строка "заворачивается" в одинарные кавычки.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646338
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Спасибо)) в дебаге все считает. А вот в листе все никак

=Avans("C:\Documents and Settings\vgorokh\Рабочий стол\АВАНС\аванс.xlsm"; "Сумма"; "Счет Б";"="; C2)
пишет value
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646354
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,


Вот к примеру
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646415
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
СПАСИБО ВСЕ ПОЛУЧИЛОСЬ
Хочу узнать такой вопрос. (я точно знаю, что ето возможно так как делала когдато)
Какие свойства нужно включать и какой кусок кода можно написать, что бы моя пользовательская функция была видна во всех книгах при открытии Excel.
Спасибо :)
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646489
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> Игорь Горбонос,
> СПАСИБО ВСЕ ПОЛУЧИЛОСЬ

Хм, а у меня нет :)

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

Нужно положить его в личную книгу макросов, которая находится в файле personal.xls(или каке там сейчас расширение) :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671071
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Спасибо :)
Код: vbnet
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Sub test2()
    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 strCriterion1 As String
    Dim strCriterion2 As Integer
 
    Dim strField1 As String
    Dim strField2 As String
    Dim strRange As String
    Dim strPath As String
    
    Dim strOperator1 As String
    Dim strOperator2 As String


    Dim x1 As Integer
    '--------------------------------------------------------------------------------------------------'
    strOperator1 = "="
    strOperator2 = ">"

    strField1 = "Счет А"
    strField2 = "Сумма"
   
    
    strCriterion1 = "29096010605907"
    strCriterion2 = 120
    
    strPath = "C:\Documents and Settings\vgorokh\Рабочий стол\АВАНС\Взаиморасчет.xls"
    strRange = "" 
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
   
        
        strSQL = "SELECT Sum([" & strField2 & "]) FROM [распределено$A1:h15000] " & _
                "WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 _
                & "' and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'"

      Debug.Print strSQL
      
    rst.Open strSQL, cnn
    
    
    x1 = rst.Fields(0)
    
    Debug.Print strSQL
    Debug.Print x1
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    
End Sub
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671075
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносПодскажите где в типах ошибаюсь....
выводит Data type mismatch in criteria expression
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671098
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> Игорь ГорбоносПодскажите где в типах ошибаюсь....
> выводит Data type mismatch in criteria expression

strCriterion2 = это число, соответственно в запросе эта часть условия должна выглядеть так:
Код: sql
1.
... and [Сумма]>120

и сравни как она у тебя выглядит.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671118
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,даже если так то все равно выводит ту же ошибку. в критерии 2 ставлю дабл, но выводит все то же
:(

Код: vbnet
1.
2.
3.
        strSQL = "SELECT Sum([" & strField2 & "]) FROM [распределено$A1:h15000] " & _
                "WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 _
                & "' and [" & strField2 & "]" & strOperator2 & "" & strCriterion2 & ""
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671127
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

спасибо )) все нашла в х1 надо было дабл поставить)))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671132
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
нет когда снимаю коментарии с условия вере то вновь не верно(((
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671146
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

вот не могу понять почему не ладиться с типами данных. проблема по моему только в них
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37671429
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> Игорь Горбонос,
> вот не могу понять почему не ладиться с типами данных. проблема по моему только в них

Потому, что нужно было переписать запрос так:
Код: vbnet
1.
strSQL = "SELECT * FROM [распределено$A1:h15000] "

,
выполнить его и посмотреть какого типа в рекордсете поля, и там было-бы видно, что field номер 2 имеет тип adDouble и
имя "Счет А", хотя аналогичное поле с именем "Счет Б" имеет тип adWarChar. После чего переходим в файл и смотрим формат
ячеек в столбце "Счет А", а он там "числовой". Поэтому вылетает с ошибкой, в условии номер счета идет как текстовый, а
сам столбец имеет тип дабл, вот на это несоответствие и ругается.

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


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