【问题标题】:Excel macro - Value compareExcel 宏 - 值比较
【发布时间】:2011-07-31 11:27:06
【问题描述】:

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

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

【问题讨论】:

  • 什么是“做某事”?每个邮政编码范围都会改变吗?
  • 等一下,我会改的。
  • hmmmm 哪个 (Integer ??) 数大于 (>) 5999 同时小于 (

标签: excel if-statement range vba


【解决方案1】:

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

您所拥有的一切都很好,这只是您最易读/最容易维护的一个案例。您应该不会注意到性能上的任何差异

【讨论】:

  • 是的,我想知道是否使用案例。或许您也可以帮我选择我需要复制的范围?
  • #Tom 是 Range(" .. ").Copy Destination:=Sheets... 原始问题中的代码?
  • 不,我改变了它,shakk明白Do something应该是什么。只是出于好奇问你能不能帮忙。
  • 啊好的,我明白了,您在每个 if 语句中到底想做什么?
  • 好吧,我已经将 if else 结构更改为 Case 结构(这更容易解释)。所以让我们说 zipcode = 2800。它遍历案例,找到正确的案例。在这种情况下,我需要一些代码来执行以下操作;复制工作表中也在此范围内的所有邮政编码,并将它们粘贴到不同的工作表中。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多