VBA数组公式获取描述两个值之间的得分

时间:2017-01-23 11:30:46

标签: arrays excel vba excel-vba excel-formula

我有以下分数范围和描述的单元格:

Statement  Critical  Significant Average  Minor Non-critical
Grades     0.8       0.6         0.4      0.2   0

我有一个数据集,其中成绩从0到1,并且想为每个观察创建一个字符串变量,根据成绩打印上述语句。

因此,对于随机单元X1,我的公式为:

={IF(X1>=A2:A6;B2:B6)}

但是如果值为0.3,则此数组公式返回False。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用INDEXMATCH的标准组合来解决此问题。公式将是(按照下面的屏幕截图):

=INDEX($F$2:$J$2,MATCH(B8,$F$3:$J$3,-1))

其中

  • $F$2:$J$2 - '陈述列表'例如重要的,重要的
  • B8 - 有问题的等级
  • $F$3:$J$3 - 等级范围
  • -1 - 作为MATCH函数的参数大于'

截图:

enter image description here

在该示例中,请注意0.4 < score <= 0.6给出Significant的分数。但是,您可能希望该范围返回Average,在这种情况下,整个MATCH函数需要一个偏移,例如:

=INDEX($F$2:$J$2,MATCH(B8,$F$3:$J$3,-1)+1)

但请注意,对于0成绩,除非您创建新的语句,否则会出现#REF!错误。例如&#39;不到关键&#39;得分为-1。

另外,请注意您的数组公式:

={IF(X1>=A2:A6;B2:B6)}

不太正确 - 通常你输入一个公式,然后使用 ctrl shift + 输入来创建一个数组公式,在你的情况下会是这样的:

{=IF(X1>=A2:A6;B2:B6)}

但这对我没有用 - 我认为除非你绝对需要一个数组公式,否则你更容易采用INDEXMATCH方法。