Excel中的三层If-Then case语句

时间:2019-03-06 18:45:53

标签: excel vba excel-formula

我正在制作一个excel文档,以根据客户支出水平来了解产品功能违规情况(即,他们花费越多,他们就可以选择的功能越多。相反,他们花费越少,选择就越少必须选择。

我们大约有7个变量用于衡量产品。对于每个变量,每个变量中都有多个选项。例如,一个特征可以是颜色,而该颜色特征的变量可以是黑色,白色,红色,黄色等。

根据客户的支出水平,可以或不允许他们从这些变量中选择某些选项。例如:

  • 花费1万美元的客户可以使用黑色产品,但不能使用其他颜色
  • 花费2万美元的客户可以使用蓝色或黑色产品,但不能使用红色
  • 花费3万美元的客户可以购买黑色,蓝色或红色的产品

因此,如果有一个客户花费1万美元并拥有蓝色产品的条目,我希望以某种方式对其进行“标记”,以期了解一段时间内发生了多少次“违规” (即2018年12月)。

我需要一种创建if-then语句的方法,该语句首先搜索支出,然后可以引用该支出中允许的/不允许的内容,然后确定是否违反了这些规则。

3 个答案:

答案 0 :(得分:0)

有多种方法可以解决此问题。您可以在一些隐藏的助手工作表中为每个价格范围定义允许的颜色,然后进行引用。抓住客户的支出,检查与该列匹配,然后检查该列中是否存在他们选择的选项。如果没有,请标记该单元格-突出显示该单元格或您想要执行的任何操作。

+-------+-------+-------+
| 19999 | 29999 | 39999 |
+-------+-------+-------+
| black | black | black |
|       | blue  | blue  |
|       |       | red   |
+-------+-------+-------+

您也可以在VBA中使用字典来存储这些允许的选项,从而完全采用这种方法。然后,只需遍历字典键,比较客户的花费,即可找到合适的字典存储。找到匹配项后,将其取值,将其分成一个数组,然后比较他们选择的选项在该支出范围内是否有效。

Dim options As Dictionary
Set options = New Dictionary
options.Add "19999", "black"
options.Add "29999", "black,blue"
options.Add "39999", "black,blue,red"

For Each spend In options.Keys
    'if customer spend is less than the max (defined here as the key)
    'then grab the value, and split it into an array
    allowedChoices = Split(options.Item(spend ), ",")

    ' if the customers selected choice is in the array of allowed choices
    If IsInArray(<the_users_choice>, allowedChoices) Then
        'flag whatever, however
    End If
Next spend 

这些是您可以用来解决此问题的两个选项。发挥创意-祝你好运。

答案 1 :(得分:0)

假设A列为支出金额,B列为颜色。

此公式在其他任何列上

=IF(A2>=30000,IF(OR(B2="Black",B2="Blue",B2="Red"),"OK","FLAG"),IF(A2>=20000,IF(OR(B2="Black",B2="Blue"),"OK","FLAG"),IF(A2>=10000,IF(B2="Black","OK","FLAG"),"Less than 10000")))

答案 2 :(得分:0)

我将创建一个查找表以确定支出水平:

enter image description here

然后使用以下公式确定是否应标记客户:

=IF(VLOOKUP(B2,J$2:K$4,2)>A2,"flagged","")

enter image description here