2014-01-07 3 views
2

У меня есть таблица Excel, которую я использую, чтобы рассчитать стоимость продукта, который мы продаем (например, страхование автомобиля). Этот продукт рассчитан на основе различных частей информации; возраст клиентов, почтовый индекс, автомобиль, профессия и т. д.Excel vlookup, включающий таблицу SQL

Я ввожу информацию на основную вкладку моей таблицы, а затем выполняю множество формул vlookup, чтобы возвращать соответствующие цифры из других вкладок таблицы. Примером одного из моих vlookups является:

= ВПР (G1, RatesInsurerX A36: B986786,2, FALSE)

Так это смотрит значение я ввожу в ячейку G1 соответствует его данным найдено на вкладке книги, называемой RateInsurerX.

Как видите, в этой таблице содержится почти 1 миллион строк, и excel начинает бороться, поэтому мне было интересно, есть ли способ сделать то же самое, что и выполнение поиска по таблице SQL, а не в книге RatesInsurerX ?

+0

Есть ли у вас данные в таблице SQL? – bendataclear

+0

Для этого конкретного поиска - Да. Большинство моих vlookup отлично работают в Excel, но таблицы почтовых индексов для продукта имеют до 1 миллиона строк, и у нас есть несколько страховщиков, поэтому я просто хочу уменьшить размер и сложность электронной таблицы, вызвав внешние данные , Мне просто нужно подтолкнуть в правильном направлении. – RumDemon

+0

Для вашего текущего поиска вы вводите формулу один раз для листа или копируете в таблицу? т.е. вам нужно искать несколько значений как часть таблицы? – bendataclear

ответ

6

Goo d news вы можете сделать это без VBA, всего несколько шагов, хотя следующим образом:

1. Сначала добавьте новый лист, назовите это что-то значимое, как PoscodeLookup.

2. Далее перейдите к Data и выберите Other Sources и Microsoft Query:

Microsoft Query

3. Затем выберите (или создайте) источник данных ODBC, который может подключить вас к вашей базе данных asd, выберите это (вам может потребоваться ввести пользователя/пароль).

4. Дизайнер запросов попросит вас выбрать таблицу, просто нажмите «Закрыть».

Click Close

5. Затем нажмите кнопку SQL:

SQL button

6. Теперь введите SQL-запрос, чтобы получить одно значение, которое вам нужно, используя примерный почтовый индекс, например:

SELECT TOP 1 [Value] FROM [MyTable] WHERE [Postcode] = 'AB12 1AA'; 

7. Теперь нажмите «ОК» и «ОК», который должен вернуть одно значение в окне.

8.Нажмите на Return data в панели инструментов:

Return data

9. Теперь обратно в Excel хит свойства в строке:

Properties prompt

10. Теперь изменить почтовый индекс, введенный в ? на вкладке Определение:

Edit Query

11. Нажмите «ОК» и «ОК» еще раз, и он предложит ввести значение, введите действительный почтовый индекс и нажмите «Ввод», теперь это даст вам значение, которое вы хотите в ячейке A1.

12. Теперь щелкните в ячейке A1 и перейти к Data>Properties затем Connection properties:

Properties

Connection properties

13. Теперь во вкладке определения у вас есть Parameters кнопку в нижней части, здесь вы можете заполнить, как показано ниже:

Parameters

Обратите внимание, клетка-мишень является ячейка, где вы вводите почтовый индекс, установите флажок обновления если вы хотите, чтобы это повторное выполнение запроса при изменении почтового кода.

Должно быть, дайте мне знать, если это не сработает.

+0

Ничего себе! Большое спасибо за этого помощника, я выгляжу так, как и раньше, поскольку я не разработчик, поэтому не знаю vba. Я пойду сегодня и обязательно обновить сообщение, чтобы ответить, когда я его отсортирую. Еще раз спасибо! – RumDemon

+0

Работает! Спасибо приятель!!! – RumDemon

0

Вы можете. В VBA листа, создать функцию следующим образом:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

и в это тело

  • Проверьте объект находится клетка вы хотите основать свой поиск на (G1)
  • Если это, получить данные из БД и поместить его там, где она должна идти

Cheers -

+0

Привет, Саймон, спасибо за ваш ответ. Я уверен, что вы предложили бы работать нормально, но поскольку я не знаю, что ответ VBA bendataclear был более подходящим для меня. – RumDemon

+0

Возможно, это тоже лучший способ. Cheers - –