Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Слияние таблиц, аналог Left Join из SQL / 7 сообщений из 7, страница 1 из 1
02.07.2013, 12:48
    #38316987
Mih-MIh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
Добрый день!
Есть интересная задача, которую не удалось решить своими силами.

Есть несколько таблиц:
1. Прайс лист 1 (содержит поля Формат магазина; товар)
2. Прайс лист 2 и так делее
3. Магазины (содержит поля Магазин; Формат магазина) Каждый магазин встречается 1 раз.

Необходимо сделать таблицу, где к каждому магазину добавлены все товары, которые в нем продаются.
Особенность в том, что в таблдице "Магазины" каждый магазин встречается 1 раз, а в таблицах "Прайс лист" есть несколько товаров для каждого формата магазина. И на каждый тип пмагазина (Название сети) есть свой правйс лист.

Что пробовал сделать:
1.Составить OLAP куб. Не вышло, тк не придумал уникального индекса, по которому можно проводить сравнение.
2. Сводная таблица. Для неё должен быть массив данных, который собственно и требуется сделать.
3. Функция "=ВПР()". Не подходит так как она только заполняет значения, но не умеет создавать новые строки и добавлять туда новые значения.

Прикрепляю файл для примера.
...
Рейтинг: 0 / 0
02.07.2013, 13:26
    #38317056
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
а если SQL-запросом?
...
Рейтинг: 0 / 0
02.07.2013, 13:27
    #38317059
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
Если вы умеете оперировать SQL-инструкциями - то почему бы просто не воспользоваться JetSQL для получения нужной выборки? ADODB вполне умеет обращаться к источнику данных - файлу Excel...
...
Рейтинг: 0 / 0
02.07.2013, 13:41
    #38317077
Mih-MIh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
Дело в том, что этих данных нет в БД. Данные есть толтько в фаилах Excel.

Я бы с радостью, да в компании принято в Excel е все делать))
...
Рейтинг: 0 / 0
02.07.2013, 13:49
    #38317085
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
вот простой пример для затравки:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ThisWorkbook.FullName + ";Extended Properties='Excel 8.0'"
rs.Open "select NUM, Sum(SUM) from [Лист2$] group by NUM order by Sum(SUM) DESC", cn, 3
Cells(1, 5).CopyFromRecordset rs
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
...
Рейтинг: 0 / 0
02.07.2013, 14:15
    #38317137
Mih-MIh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
AndreTM,

Огромное спасибо.
Я в Accesse создал БД. там установил связь с нужными файлами и написал запрос
--
SELECT *
FROM Адреса LEFT JOIN Билла ON Адреса.Сеть=Билла.сеть;
--
Получилось.

НО! Можно ли подобное делать средствами Excel?
...
Рейтинг: 0 / 0
02.07.2013, 14:26
    #38317156
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние таблиц, аналог Left Join из SQL
так можно же
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Слияние таблиц, аналог Left Join из SQL / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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