[Excel]将一个值与多个范围进行比较,并返回该值作为一个类别(类别排名)的范围?

时间:2016-02-25 05:13:35

标签: excel excel-formula excel-2010

我一直在使用Excel(2010)进行更多的工作,我一直在努力 excel 使用此工具变得更好。

我最终想要做的是将一个单元格的值与多个值范围进行比较(每个范围都是它自己的类别)。如果初始值与某个范围/类别中的值匹配,则最终结果将显示它来自哪个类别。某些类别的排名高于其他类别,因此排名较高的类别优先于排名较低的类别

由于这对我来说似乎有点复杂(我是一个新手),我决定从一个更简单的示例问题开始,然后继续努力:

我有10个单元格,值为1 - 10.我有两个类别,一个用于奇数,一个用于偶数。我得到了我的公式:

=IF(COUNTIF($A$14:$A$18,A2),CELL("contents",$F$2),IF(COUNTIF($A$21:$A$25,A2),CELL("contents",$F$3),"ERROR"))

where A2 = cell which I am comparing to the other ranges
      $A$14:$A$18 = my range of odd numbers
      $F$2 = "ODD"
      $A$21:$A$25 = my range of even numbers
      $F$3 = "EVEN"

现在,我想添加第三类,其排名高于我拥有的第二类,“PRIME”数字类别。看看2是如何从“偶数”类别和“PRIME”类别,我希望显示“PRIME”数字类别并覆盖任何其他类别。

这样的事情可能吗?

1 个答案:

答案 0 :(得分:0)

仅通过电话(可能包含错误)为VBA:

Public Function getRangeName(str As String) As String
  Dim MyRanges as Variant, MyNames As Variant, i As Long
  MyRanges = Array(Range("A1:A10"), Range("B1:B10"), Range("C1:C10"))
  MyNames = Array("Range A", "Range B", "Range C")
  For i = 0 To 2
    If IsNumeric (Application.Match(str, MyRanges(i), 0)) Then
      getRangeName = MyNames(i)
      Exit Function
    End If
  Next
End Function

它将停在它找到的第一个范围并输出它而不是""如果它无处

此外,如果范围粘在一起,你可以使用类似的东西:

=IFERROR(CHOOSE(MAX((A1:C8="Search String")*COLUMN((A1:C1))),"range a","range b","range c"),"")

作为数组公式(公式需要用CTRL + SHIFT + ENTER确认),它将输出最高范围(c> b> a)

对于至少处于相同高度的非连续范围(对于A1:A10,C1:C10和E1:仅限E10)执行此操作

=IFERROR(CHOOSE(MAX((A1:E10="Search String")*{2,0,3,0,1}),"range e","range a","range c"),"")

顺序也不同(c> a> e)...还需要用CTRL + SHIFT + ENTER确认