我实际上需要在思考过程和选项方面的帮助,而不是在编码方面。
我希望用户输入他们的邮政编码。然后我需要看看邮政编码是什么范围。编辑:因为我来自比利时,邮政编码是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将下限和上限提供给自动过滤器标准。