Макрос Excel - Сравнение значений - PullRequest
0 голосов
/ 07 апреля 2011

Мне действительно нужна помощь в процессе мышления и опциях, а не в кодировании.

Я хочу, чтобы пользователи вводили свой почтовый индекс.Тогда мне нужно посмотреть, в каком диапазоне находится почтовый индекс.Изменить: Поскольку я из Бельгии, почтовый индекс состоит из 4 цифр (1000, 1500, 8380, ...)

Zip code: 2800
Range between;
1000-1999
2000-2999
3000-3999
4000-4999
If the range is between one of the following, display all zip codes for that range
Else do nothing

Я придумал структуру If, Else.Но мне интересно, есть ли лучший вариант?

Zip code: 2800
If zip code > 3999 then
   'Select all zipcodes within this range
   'Range(" .. ").Copy Destination:=Sheets...
ElsIf zip code > 2999 then
   'Select all zipcodes within this range
   'Range(" .. ").Copy Destination:=Sheets...
Elsif zipcode  ....

Спасибо.

@@@@@@@@@@@@@

Openshac

Я придумал это.

x = 1
Sheets("Reference").Select
For i = 1 to 115
    If Range("A" & i).value > 5999 and Range("A" & i).value < 6000 then
        Range("A" & i).copy Destination:=Sheets("Design").Range("A" & x)
        x = x + 1
    End if
Next i

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

читая различные комментарии, мне до сих пор не ясно, в чем вопрос. Повторно, вы предоставляете входной ZIP (ARG = 2800), и вы хотите отобразить все ZIP таблицы данных, где цифра тысячи соответствует цифре ввода тысячи, другими словами

ZIPdata.ZIP BETWEEN INT(ARG / 1000) * 1000 AND INT(ARG / 1000) * 1000 + 999

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

=AND(B9>=$B$2;B9<=$E$2)

    B9 being the ZIP in your first data record (not the heading)
    B2 being the lower bound using above formulae
    E2 being the upper bound using above formulae

В качестве альтернативы вы можете определить автофильтр через ZIP и ввести нижнюю и верхнюю границы в критерии автофильтра через VBA.

0 голосов
/ 07 апреля 2011

Как насчет оператора switch?

Select Case zipCode
Case 1000 To 1999
    'Do something
Case 2000 To 2999
    'Do something
Case 3000 To 3999
    'Do something
Case 4000 To 4999
    'Do something
Case Else
    ' Do nothing
End Select

То, что у вас есть, хорошо, это всего лишь пример того, что наиболее читабельно для вас / проще всего для вас.Вы не должны заметить разницы в производительности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...