Итак, вы создаете электронную таблицу, которая требует, чтобы пользователь вводил ZipCode, City и State … Как создать более умную электронную таблицу, которая автоматически заполняет Город и Штат после того, как пользователь вводит только ZipCode?
Я просмотрел несколько базовых руководств, которые разработчики Интернета используют с XMLHttpRequest, например этот, и был вдохновлен воссоздать те же функциональные возможности этого превосходного руководства по XMLHttpRequest в Excel (прокрутите вниз ссылку для демонстрации).
Успех! Я собрал быстрый флэш-ролик, чтобы продемонстрировать создание zip-кода и автоматическое возвращение города и штата в Excel.
А вот таблица, которую можно скачать (кода не так уж много).
Как это работает
1. Вам нужна база данных, в которой есть информация о почтовом индексе / штате / городе. Получите это здесь (я использовал MYSQL, как показано).
2. Вернуть город и штат на основе запроса почтового индекса из базы данных, я использовал PHP для возврата текста.
3. Вернуться в Excel: при изменении поля ZipCode запускается событие Worksheet_Change, отправляющее запрос через WinHTTP на страницу PHP, которая возвращает город и штат для запроса обратно в Excel.
4. Я использую функцию Split () для анализа строки и записи результатов в электронную таблицу.
Примечания
Почему бы не вернуть XML?
Это всего лишь строка из двух слов, и с текстом легко работать, когда есть только два слова. Однако XML, возможно, был более привлекательным, потому что я мог бы просто сопоставить два поля результатов с ячейками и вызвать настраиваемый URL-адрес импорта: каждый раз.
Почему бы просто не подключиться к БД напрямую?
Да, это возможно, однако я предпочел бы создать «службу», таким образом, любое приложение, которое я создаю, на любой платформе, может ее использовать.
Почему бы просто не импортировать Zip-файлы в Excel и выполнить поиск?
Возможно, однако, если таблица используется в нескольких книгах, необходимо внести изменения во все из них.
Почтовые индексы в примере могут быть устаревшими.
Проверено только в XL2003.