Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2010, 18:59   #1
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию Поиск по двум значениям из двух таблиц

Добрый день!
Подскажите формулу поиска значений по двум колонкам из разных таблиц
Есть две таблицы в которой колонки 1 и 2 имеют одинаковые параметры
Надо найти значение в третьей колонке из таблицы 2 и вставить в таблицу 1, для проверки
Вложения
Тип файла: rar Образец.rar (2.7 Кб, 35 просмотров)
Freerider1972 вне форума Ответить с цитированием
Старый 24.06.2010, 19:32   #2
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

В ячейку D3:
=ПРОСМОТР(A3&B3;$H$3:$H$18&$I$3:$I$ 18;$J$3:$J$18)
И протянуть вниз...
kim2 вне форума Ответить с цитированием
Старый 24.06.2010, 19:39   #3
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

А лучше формулой массива:
=МАКС(ЕСЛИ(A3&B3=$H$3:$H$18&$I$3:$I $18;$J$3:$J$18))
kim2 вне форума Ответить с цитированием
Старый 24.06.2010, 19:44   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

В ячейку D3
=СУММПРОИЗВ(($H$3:$H$18=A3)*($I$3:$ I$18=B3)*$J$3:$J$18)
и протягиваем.
nilem вне форума Ответить с цитированием
Старый 24.06.2010, 21:05   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Freerider1972.
предлагаю ознакомиться с нестандартным для MS Excel вариантом решения Вашей задачи.
Вариантом использующим библиотеку ADO и SQL.
Евгений.
Вложения
Тип файла: rar Образец_ADO.rar (13.3 Кб, 45 просмотров)
Teslenko_EA вне форума Ответить с цитированием
Старый 24.06.2010, 22:19   #6
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию

Большое человеческое спасибо! kim2, nilem, Teslenko_EA - отличное профессиональное решение!!! Просто шедевр!
Freerider1972 вне форума Ответить с цитированием
Старый 24.06.2010, 22:21   #7
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте Freerider1972.
предлагаю ознакомиться с нестандартным для MS Excel вариантом решения Вашей задачи.
Вариантом использующим библиотеку ADO и SQL.
Евгений.
Отличный подход! Большое спасибо!
Но проблема то еще в том, что таблицы сравниваемые находятся не на одном рабочем листе, а на разных
Хотя можно скопировать на один... Тоже вариант...
Freerider1972 вне форума Ответить с цитированием
Старый 24.06.2010, 22:45   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

"..Но проблема то еще в том.." - проблемы никакой нет, немного анализа текста SQL конструкции и думаю будет понятно, что необходимо изменить в строке:
"..T2.F3 FROM [Лист1$H3:J65000] .."
чтобы данные второй таблицы получались с листа Лист2 и диапазона например: A3:C65000

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 19.10.2010, 19:56   #9
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Евгений!
Пишу код:
Код:
Const sCn1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Const sCn2 = ";Extended Properties=""Excel 8.0;HDR=No"";"
Dim cn As ADODB.Connection, rs As ADODB.Recordset
Dim sCon As String
'создание экземпляра подключения и рекордсета
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
With ThisWorkbook
    sCon = sCn1 + .Path + "\" + .Name + sCn2
    cn.Open sCon
    If Not cn.State = 1 Then Exit Sub
    'Формирование строки запроса к заданному диапазону
    'формирующего требуемый набор данных
    Const sSql = "SELECT T.F1, T.F2, T.F3, " + _
    "(SELECT T2.F3 FROM [Sheet1$H4:J65000] T2 " + _
    "WHERE T2.F1=T.F1 AND T2.F2=T.F2) AS F " + _
    "FROM [Sheet1$A4:C65000] T"
    rs.Open sSql, cn, adOpenStatic, adLockReadOnly
    'размещение рекордсета в ячейке "A4",
    'с заменой существующих данных диапазона
    .Sheets("Sheet1").Range("A4").CopyFromRecordset rs
Мне выдает ошибку на строке:
Код:
rs.Open sSql, cn, adOpenStatic, adLockReadOnly
Обьект 'Sheet1$H4:J65000' не найден ядром базы данных Microsoft Jet. Проверьте существование обьекта и правильность имени и пути
Что я делаю не так? Файл прилагаю
Вложения
Тип файла: zip proba.zip (15.1 Кб, 12 просмотров)
Jaroslav вне форума Ответить с цитированием
Старый 20.10.2010, 11:01   #10
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Проблему решил. Вместо ThisWorkbook написал ActiveWorkbook. Тему можно считать закрытой
Jaroslav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подстановка с выбором по двум значениям Terking Microsoft Office Excel 3 04.06.2010 11:21
поиск по двум полям denisov PHP 4 23.04.2010 21:50
Поиск значения по двум символам кода maneta Microsoft Office Excel 3 17.01.2010 22:14
поиск данных по двум значениям robbe Microsoft Office Excel 14 13.01.2010 12:03
Объединение двух таблиц jekis2506 Microsoft Office Excel 5 15.04.2009 08:34