Next i
должен находиться за пределами If-End If
, и вам нужно добавить Next j
в ваш цикл For i
, чтобы код даже работал. Кроме того, если j = 8
ваш второй цикл будет выполняться только один раз, и вы можете полностью его исключить.
было бы гораздо проще сказать
For i = 26 To 33
If Worksheets("Calculations").Cells(i, 8) = "Yes" Or Worksheets("Calculations").Cells(i, 8) = "No Requirement" Then
Worksheets("Calculations").Range("H33").Value = "Yes"
Else
Worksheets("Calculations").Range("H33").Value = "No"
End If
Next i
Я выполнил бы запрос, который возвратил все записи, заключенные в скобки в квадратном конверте, охватывающем радиальный поисковый круг (minlat <lat <maxlat и minlong <долго <maxlong), и затем выполните последующую обработку это для возврата только точек в самом кругу радиуса. (Удостоверьтесь, Ваш lat и длинные поля индексируются).
Если Вы хотели получить необычную, поддержку SQL Server пространственные индексы.
Я выполняю сайт, который должен выполнить этот запрос о столь же в секунду на пользователя и сюда является тем, что я изучил:
Прежде всего удостоверьтесь, что Ваша таблица местоположения имеет индексы на Lat и Lon. Вот в чем разница между 20 мс и время отклика 15, если у Вас есть миллионы записей.
Начнитесь с запросом ограничительной рамки, чтобы заставить ряд местоположений работать с. Затем вычислите расстояния на тех, вид, и если Вы являетесь суетливыми о точности, фильтруете некоторых.
Откровенно говоря, я не волновался бы о предварительных вычислениях ничего. Как я говорю, я выполняю этот тип запроса против таблицы местоположения с 6 000 000 записей, и это обычно возвращает результаты в <50 мс. В зависимости от Ваших потребностей, это действительно что-то, чтобы быть достаточно быстрым.
Удачи!
Необходимо посмотреть на GeoNames.org. Можно запросить theirwebservice для того, что Вы ищете, или Вы можете dl их база данных.
Это - на самом деле очень тяжелая проблема решить. Я рекомендовал бы сделать некоторый обман путем предварительного создания базы данных. Создайте сетку любого вида близости, необходимо найти, например, взять каждые 10 миль в каждом направлении, добавить запись в базу данных для каждой zip для того узла решетки и расстояния, и затем когда запрос входит, Вы сначала переводите точку запроса в один из Ваших узлов решетки. Теперь можно искать расстояние довольно легко.
Это решение в основном означает торговое помещение в течение времени, таким образом, можно получить довольно большую базу данных быстро. Хорошие новости: это - очень легкие данные для индексации.