|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Есть исходная таблица Excel. Необходимо в новую таблицу положить отфильтрованные данные из исходной. В приложенном файле необходимо заполнить лист ВОЗВРАТ теми данными из листа ДДС где значение ячейки в столбце Статья = ВОЗВРАТ. Реализовал через цикл... Это долго. Хотелось бы попробовать через SQL запрос, но не хватает знаний. Примерно понимаю, что здесь наверное будут коннекты и рекордсеты, но собрать работоспособный код из того, что нашел в сети - не получается. Если не трудно, покажите код для моего примера. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 10:57 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Тверд, Автофильтр. Критерий для статьи выбрать "возврат". В чём проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 11:56 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLADТверд, Автофильтр. Критерий для статьи выбрать "возврат". В чём проблема? Ну да, выбрать только видимое, вставить... можно и так, но я хочу раскурить как это делается SQL'лем ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 12:10 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Сначала примерно так открываете свою книгу, можно из самого себя. Далее примерно так получаете запросом что нужно: Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 12:43 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLADСначала примерно так открываете свою книгу, можно из самого себя. Далее примерно так получаете запросом что нужно: Код: vbnet 1. 2. 3. 4. 5.
Ругается: "Недопустимое имя 'ДДС$'..." ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 13:57 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Вот так заработало: Код: vbnet 1. 2. 3. 4. 5.
Большое спасибо! ПС: На ThisWorkbook.FullName машина давала полное имя PERSONAL.XLSB ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 14:08 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Лиха беда начало. Вот, решил "ВПР" заменить SQL запросом, но с синтаксисом засада. И на счёт "CopyFromRecordset" не уверен. По идее, если значение столбца [Финансовая позиция] на листе [ДДС$] = значению столбца ["A:A"] на листе [КАРТА$], тогда [ДДС$].[Статья] = [КАРТА$].["B:B"]. Подскажите как правильно. Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 10:58 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Тверд, INNER JOIN после сета пишется + Лист "Карта" мы не видим, сложно оценить что вы хотите + "А:А" ну это слишком... тут обычный SQL "аксессовый" грубо говоря, он не поймёт что массив значений это. Столбцы A и B имеют же имена? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 13:09 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLAD, Код: vbnet 1. 2.
Столбцы я обозвал, INNER JOIN переставил. Не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 16:42 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Тверд, Я ошибся с иннер джойн, верните его как раньше. А вот "Worksheets("ДДС").Range("B2").CopyFromRecordset _" уберите, так как у нас апдейт, а не выборка. Код проверил на тестовом запросе и тестовых данных. Отработал Лист Карта у меня: СтатьяЗамена0.3.3.3ТЕКСТ_0.3.3.30.4.6.6ТЕКСТ_0.4.6.6 Запрос такой: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 17:22 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLAD, Что-то я делаю не правильно...? Лист ДДС: СтатьяФинансовая_позиция 2149 1395 Лист КАРТА: ФПСБ21490.3.3.10.1013951.5.8.1 Запрос: Код: vbnet 1. 2.
Ошибка: несоответствие типа в выражении. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 18:04 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Тверд, Ваш код отработал правильно. У меня Excel 2010. Сохранил ваши данные в файл формата Excel 2003. ADODB 2.8 версия. Какие ваши параметры, и соберите тестовый файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 20:28 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLAD, Хм... SQL запрос отработал, но только после вот такой свистелки для листа [ДДС$]: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
После отработки этого цикла, данные в столбце выравниваются по правому краю. Я, кстати, сталкивался с этим и раньше, когда применял ВПР функцию. Решал через СЦЕПИТЬ с "Ё", например с последующим удалением "Ё" через автозамену. Эффект тот же - данные выравниваются по правому краю и начинают корректно восприниматься функцией. При этом формат данных, насколько я могу судить, не меняется. Может подскажете с чем это связано. Огромное спасибо за терпение и помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 08:57 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Тверд, Такое бывает, когда выгружаешь данные не с тем типом. Например с SQL сливал данные типа VARCHAR, а в ячейки цифры и данные выравнивались по левому краю. Любая формула с ячейкой выдавала ошибки. Если в ячейку перейти как в режим редактирования и закрепить Enter'ом - т.е. эксель преобразовывал его в число. Тоже самое можно было использовать ячейку так = A1 + 0 - т.е. прибавляя ноль. Возможно у вас такая же проблема, что тип в ячейке отличается?... Ну надо посмотреть на данные которые есть. Откуда данные получаете, вручную вносите или с сервера?... Ну и тестовый проект выложите ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 09:14 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLAD, Точно, на КАРТЕ (создан вручную) VarType = 5, а на ДДС (выгружен) VarType = 8. Сейчас я с этим разберусь. Подскажите, как корректно ADODB.Connection выгрузить, а то у меня в Project Exsplorer'е четыре раза висит книга с которой я коннектился. Set = Nohing, .Close? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 09:55 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Тверд, AdoConnection.Close и можно для уверенности Nothing сделать, хотя рекордсет если локально в процедуре объявлен, сам закроется и уничтожится после выхода из процедуры. А книга висит, потому что книгу помимо wb.Close ещё и Set wb = Nothing сделать, тогда она пропадёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 10:41 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
VSVLADТверд, AdoConnection.Close и можно для уверенности Nothing сделать, хотя рекордсет если локально в процедуре объявлен, сам закроется и уничтожится после выхода из процедуры. А книга висит, потому что книгу помимо wb.Close ещё и Set wb = Nothing сделать, тогда она пропадёт. Выполняю вот этот код... Код: vbnet 1. 2. 3. 4. 5.
и закрытая книга висит в Project Exsplorer'е как открытая. wb я ни где не объявлял, на Код: vbnet 1.
машина крутит пальцем у виска. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 11:06 |
|
SQL запрос на заполнение листа Excel данными из соседнего листа этой же книги
|
|||
---|---|---|---|
#18+
Виноват, выполняется вот этот код Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 11:08 |
|
|
start [/forum/search_topic.php?author=publ&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
259ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 2786ms |
total: | 3157ms |
0 / 0 |