Excel宏 - 值比较

时间:2011-04-07 08:09:50

标签: excel excel-vba if-statement range vba

我实际上需要有关思考过程和选项的帮助,而不是真正的编码。

我希望用户输入他们的邮政编码。然后我需要查看邮政编码的范围。 编辑:因为我来自比利时,邮政编码是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 :(得分:0)

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

你得到的是好的,这只是你最容易阅读/最容易维护的案例。你不应该注意到性能上的任何差异

答案 1 :(得分:0)

阅读各种评论我仍然不清楚是什么问题。我想你提供一个输入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将自动过滤器标准中的低端和上限输入。