If语句或案例中的多个选项的Excel宏最佳实践

时间:2016-07-01 05:06:39

标签: excel excel-vba if-statement lookup vlookup vba

我有多个"通话类型" (来自"漫游"到"国际")我需要一个vlookup来应用正确的速率,具体取决于excel宏中的类型。

这样做的最佳做法是什么?

如果CategoryType ="漫游"和国家在名单A中被捕 然后

如果列表B 然后

我是否使用数组?如何检查字符串是否在IF语句中的数组中?

解决:我使用Case然后包含子案例来分配新的类别:

Select Case otype
Case "International"
    Select Case country
    Case "Australia", "China", "Singapore"
    ActiveCell.Offset(0, 68).Value = "R01"
    Case Else
    ActiveCell.Offset(0, 68).Value = "R02"
    End Select
End Select

2 个答案:

答案 0 :(得分:1)

你可以使用类似下面的公式(数组公式,所以使用Ctrl + Shift + Enter来应用)

=MAX((B4:B7=B10)*(IF(ISERROR(SEARCH(B11,C4:C7)),0,1))*D4:D7)

一个问题是,如果您要搜索的国家/地区恰好是另一个国家/地区的子字符串,则可能会收到错误结果。唯一的解决方法是将所有国家/地区名称设置为|France|Canada|UK|,然后在搜索国家/地区输入周围添加管道。

enter image description here

答案 1 :(得分:0)

还可能有另一种选择。当我处理这样的计算时,我尽量避免将多个值放入单个字段中。相反,我尝试将其视为数据库:

enter image description here