在单元格 D1 中放置=INDEX($A$1:$A$5,MATCH(C1,$B$1:$B$5,0))
然后在单元格 D2 中放入=IF(D1<>INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)),INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)),INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)+MATCH(C2,INDIRECT("$B$"&MATCH(C2,$B$1:$B$5,0)+1&":$B$5"),0)))
Grades
当存在重复时,这也将起作用
但我强烈建议使用Sort
如下:
*****另外: ***** 这里是对上述公式的解释。
要获取包含我们要查找的数字(C 列中的数字)的行,您需要使用Match()
函数。我们=MATCH(C1,B1:B5,0)
输入D1
:
这是在做什么:正在寻找 in 中的值C1
,这是31
它正在寻找 in Range("B1:B5")
,而 0 表示完全匹配。
因此,当寻找匹配时,C1
我们31
得到 5。这告诉我们 31 在Row 5
现在,要获得Column A
on的值,Row 5
我们使用INDEX()
如下函数:
我们添加=MATCH(C1,B1:B5,0)
到D1
=INDEX(A1:A5,MATCH(C1,B1:B5,0))
这将寻找Range("A1:A5")
(Row 5
这是因为 =MATCH(C1,B1:B5,0)
= 5),结果将是Grey
现在如果我们把这个公式往下拉,我们会发现第一个问题:
这是我们的 2 个问题:
1) We get an `N/A` error in the last row.
2) Although `Green` is only in `Range("A1:A5")` one time we see it twice
even though it would seem that `White` should be twice.
这些是原因,因为:
1) We need to add `$` to the range that will remain the same so when we drag down
the formula is won't shift the range. As is the formula in `D5` is
`=INDEX(A5:A9,MATCH(C5,B5:B9,0))` and we receive the error *because*
`Range("A5:A9")` does not contain `15`, but the issue is we meant
to look in `Range("A1:A5")`
所以我们将公式更改为:=INDEX($A$1:$A$5,MATCH(C1,$B$1:$B$5,0))
请注意,我们没有在公式中使用$
on ,因为我们希望这个值随着我们向下移动而改变。C1
但是当它们不应该存在时,我们仍然存在双重值的问题。
因为D1
是第一个单元格,我们不会更改其中的公式。因为任何等于最大值的东西都只是与之相关联,我看不出有任何理由说明平局的顺序很重要。
相反,我们将开始D2
并输入=IF(D1<>INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)),INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)),INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)+MATCH(C2,INDIRECT("$B$"&MATCH(C2,$B$1:$B$5,0)+1&":$B$5"),0)))
这样做是检查 的值=INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0))
是否不等于上面行中的值。(作为一个排序列表意味着所有双精度值将在彼此之上)如果它不一样,则使用该值,但如果它相同,我们需要做更多的工作。
如果值不相同,我们使用公式INDEX($A$1:$A$5,MATCH(C2,$B$1:$B$5,0)+MATCH(C2,INDIRECT("$B$"&MATCH(C2,$B$1:$B$5,0)+1&":$B$5"),0)))
现在来解释它,我将使用我们的双值示例。在D3
我们找到公式:=IF(D2<>INDEX($A$1:$A$5,MATCH(C3,$B$1:$B$5,0)),INDEX($A$1:$A$5,MATCH(C3,$B$1:$B$5,0)),INDEX($A$1:$A$5,MATCH(C3,$B$1:$B$5,0)+MATCH(C3,INDIRECT("$B$"&MATCH(C3,$B$1:$B$5,0)+1&":$B$5"),0)))
因为我们知道这INDEX($A$1:$A$5,MATCH(C3,$B$1:$B$5,0))
将等于上面的单元格White
(if false
INDEX($A$1:$A$5,MATCH(C3,$B$1:$B$5,0)+MATCH(C3,INDIRECT("$B$"&MATCH(C3,$B$1:$B$5,0)+1&":$B$5"),0))
我们知道在这种情况下MATCH(C3,$B$1:$B$5,0)
包含第一个实例的行是行,所以我们需要在 Under 行中查找 23 。所以我们使用which is equal to因为我们将 a 添加到第一个匹配or的行中。C3
23
Row 1
Row 1
MATCH(C3,INDIRECT("$B$"&MATCH(C3,$B$1:$B$5,0)+1&":$B$5"),0)
MATCH("23", B2:B4,0)
1
23
C3
现在将返回我们2
as 的值,该值23
在 的第二行中,Range("A2:A5")
在Red
该范围内,如下所示:Row 1
Blue
Row 3
但我们不希望Row 2
我们知道23
与Green
和 相关Green
的,Row 3
所以我们将最后找到值的行23
(1
或MATCH(C3,$B$1:$B$5,0)
)添加到我们当前找到它的行(2
)并获取Row 3
。