if语句- Excel宏-值比较



我实际上需要在思考过程和选项方面的帮助,而不是在编码方面。

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

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

你得到的很好,这只是一个对你来说最易读/最容易维护的例子。您不应该注意到任何性能差异

阅读各种评论我仍然不清楚是什么问题。我认为您提供了一个输入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将下限和上限提供给自动过滤器标准。

相关内容

  • 没有找到相关文章

最新更新