我一直在使用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”数字类别并覆盖任何其他类别。
这样的事情可能吗?
答案 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确认