在一行中查找特定值的最后一次出现

时间:2014-12-09 21:11:34

标签: excel spreadsheet

我有一张桌子可以保持梦幻足球联赛的成绩。得分最低的一周不包括在总数中。

我可以使用=min function [=min(B2:R2)]

找到最低分数

我可以使用=match function. [=MATCH(S2,B2:R2,0)]

找到第一个实例

但是我想要一个公式,它返回最低得分周的最新出现次数。

例如Portia最低得分为8,第一次出现的是第4周,但我希望它能够返回最近一次出现的第11周

enter image description here

2 个答案:

答案 0 :(得分:16)

您也可以使用LOOKUP函数执行此操作并避免使用数组公式,例如假设S2具有最小值,您可以使用该值在T2中复制该值,从而获得上周的最后一周

=LOOKUP(2,1/(B2:R2=S2),B$1:R$1)

这是有效的,因为(B2:R2=S2)返回TRUE/FALSE值的数组,然后将该数组除以1会得到1#DIV/0!个错误的数组。当您在该阵列上使用2作为查找值时,它将无法找到任何2因此将与最后匹配数组中的数字(最后1)。这对应于具有最小值的最后一周,因此使用顶行作为"返回向量"表示公式根据需要返回相应的周数

答案 1 :(得分:2)

您需要使用数组公式来实现此目的。以下将返回&#34;最高&#34;如果您使用列B:R作为数据列,列T作为低周列,则为最低值。您需要通过将其复制并粘贴到单元格T2并按 Ctrl + Shift + Enter 来输入此数组(CSE)公式。< / p>

=IFERROR(INDEX($A$1:$R$1,1,SMALL(IF(B2:R2=MIN(B2:R2),COLUMN(B2:R2),FALSE),COUNTIF(B2:R2,MIN(B2:R2)))),"")

说明

首先,COUNTIF(B2:R2,MIN(B2:R2))将计算最小值出现的次数。这是必需的,因为简单的MIN(B2:R2)只会获取第一个最小值,而不是第n个最小值。

接下来,IF(B2:R2=MIN(B2:R2),COLUMN(B2:R2),FALSE)是等式的实际数组公式部分(您需要使用 Ctrl + Shift + 输入的原因)。它只返回最小值时的引用,并返回大于最小值的所有其他条目的FALSE。现在,只有列数的数组是数据集中最小的值。

然后,SMALL(IF(B2:R2=MIN(B2:R2),COLUMN(B2:R2),FALSE),COUNTIF(B2:R2,MIN(B2:R2)))将获取最小值的列号,并查找最新出现的值,该值来自COUNTIF(B2:R2,MIN(B2:R2))代码。

现在最后一次出现的最小事件&#39;列号已知,您可以使用INDEX函数查找第一行INDEX($A$1:$R$1,1中的值。

最后,如果IFERROR函数找到匹配项,SMALL将显示低周行,否则将显示空白单元格。这可用于将此数组公式进一步向下复制到您尚未拥有用户的行中。

结果

enter image description here