Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Vba+Excel - обработка ячеек аля SQL / 13 сообщений из 13, страница 1 из 1
24.10.2007, 10:03
    #34889978
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Народ, кто сталкивался с решением такой задачи:
на листе выделен диапазон. Необходимо в другой диапазон
записать строки сгруппированные по 2 столбцам.
Куда смотреть? Есть подозрение, что хорошо применить SQL
выражение к данным....
...
Рейтинг: 0 / 0
24.10.2007, 12:12
    #34890645
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
возможно сводная таблица подойдет
или все же SQL

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
24.10.2007, 12:59
    #34890900
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Куда копать по сводным таблицам?
...
Рейтинг: 0 / 0
24.10.2007, 13:24
    #34891057
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
avdjНарод, кто сталкивался с решением такой задачи:
на листе выделен диапазон. Необходимо в другой диапазон
записать строки сгруппированные по 2 столбцам.
Куда смотреть? Есть подозрение, что хорошо применить SQL
выражение к данным....
А через цикл не пробывал прогнать цикл по всему диапазону, записывать значенияв массив, ноаое значение сравнивать с значениями массива, если нет совпадений, то добавлять в конец массива.

А как в Excel работать с помощью SQL я не знаю. И можно ли вобще???

Андрей.
...
Рейтинг: 0 / 0
24.10.2007, 13:44
    #34891177
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Через массив будет медленно по-мойму...
Да и надо не просто уникальные, нужна группировка по полям 1,2 с суммированием по полям 3,4
Буду посмотреть на сводные таблицы...
...
Рейтинг: 0 / 0
24.10.2007, 13:53
    #34891212
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
avdjЧерез массив будет медленно по-мойму...
Да и надо не просто уникальные, нужна группировка по полям 1,2 с суммированием по полям 3,4
Буду посмотреть на сводные таблицы...
Если бы это была таблица БД, то с помощью SQL элементарно. А так можно обойтись циклами и массивами.
Я НЕ ЗНАЮ как работать с таблицей Excel с помощью языка запросов SQL.
Если это и можно, то не факт, что это будет проще.


Андрей.
...
Рейтинг: 0 / 0
24.10.2007, 15:11
    #34891575
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Belkin
Если бы это была таблица БД, то с помощью SQL элементарно. А так можно обойтись циклами и массивами.
Я НЕ ЗНАЮ как работать с таблицей Excel с помощью языка запросов SQL.
Если это и можно, то не факт, что это будет проще.

Андрей.

Я и не настаиваю, что знаешь. Разберусь расскажу.
...
Рейтинг: 0 / 0
24.10.2007, 16:19
    #34891904
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
avdj
Я и не настаиваю, что знаешь. Разберусь расскажу.
Ловлю на слове !!! Отпишешься здесь.

Андрей.
...
Рейтинг: 0 / 0
24.10.2007, 20:15
    #34892761
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Собственно, тут вопрос в том, как получить какой-то лист текущей книги, как, например, DAO.table
Дальше работать просто.
Выложу вариант (он был для работы с другими книгами, не активной), переписанный для текущей.
Но книга все равно должна быть предварительно сохранена под каким-то именем, и работать приходится с ней, как с чужой...
Неудобно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub bb()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim tb As DAO.TableDef

Set ws = CreateWorkspace("", "admin", "", dbUseJet)
Set db = ws.OpenDatabase(ActiveWorkbook.Name, False, True, "Excel 8.0;HDR=NO;IMEX=1")
Set tb = db.TableDefs( 0 )
Set rs = db.OpenRecordset("SELECT [F1], [F2] FROM [" & tb.Name & "] GROUP BY [F1], [F2]")

ActiveWorkbook.Sheets( 2 ).Range("A1").CopyFromRecordset rs

Set rs = Nothing
Set tb = Nothing
Set db = Nothing
Set ws = Nothing
End Sub
А вот вопрос в первой строчке моего письма остался нерешенным.
Как?
Возможно, это элементарно.
...
Рейтинг: 0 / 0
25.10.2007, 11:46
    #34893731
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Letter_D
Спасибо хороший примерчик.
Теперь с Excel будет проще работать.
Для начинающих добавлю, чтобы не было вопросов, типо не работает:
Необходимо подключить библиотеку Microsoft DAO 3.6 Object Library


-----------
Андрей.
...
Рейтинг: 0 / 0
26.10.2007, 11:56
    #34896870
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
BelkinНеобходимо подключить библиотеку Microsoft DAO 3.6 Object Library

Можно и через ADO:

Код: plaintext
1.
2.
3.
4.
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.Mode = adModeRead
    cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=""" & sXLS & """;Mode=Read;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
    r.Open "SELECT F1, F3, F4, F5, F6, F7, F8, F9, F10, F12, F15 FROM [" & ListName & "$a13:s65536]", cn, adOpenStatic, adLockReadOnly
...
Рейтинг: 0 / 0
26.10.2007, 12:08
    #34896932
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
AndrF BelkinНеобходимо подключить библиотеку Microsoft DAO 3.6 Object Library

Можно и через ADO:

Код: plaintext
1.
2.
3.
4.
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.Mode = adModeRead
    cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=""" & sXLS & """;Mode=Read;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
    r.Open "SELECT F1, F3, F4, F5, F6, F7, F8, F9, F10, F12, F15 FROM [" & ListName & "$a13:s65536]", cn, adOpenStatic, adLockReadOnly

Не понял, и не работает может протестируешь и подскажешь что не так. Бидлиотеку Microsoft ActiveX Data Object 2.1. Library подключил, но ошибка в 4 строке.
Может протестируешь и приведешь полный код с объявлением переменных.
Заранее благодарен.


Андрей.
...
Рейтинг: 0 / 0
28.10.2007, 22:36
    #34900242
avdj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vba+Excel - обработка ячеек аля SQL
Belkin avdj
Я и не настаиваю, что знаешь. Разберусь расскажу.
Ловлю на слове !!! Отпишешься здесь.

Андрей.

Посмотрел предложенное решение - все ок - так и сделал не много подпилив.... Но первоначально идея была сложить все в базу и из неё уже селектом данные тянуть. Из екселя намного проще.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Vba+Excel - обработка ячеек аля SQL / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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