Excel / LibreOffice Calc:在最新第一次出现的列中查找项目?

Excel / LibreOffice Calc:在最新第一次出现的列中查找项目?

在 Calc 或 Excel 表中,我有一列包含一堆名称。每个名称可以出现一次或多次。

每个名字都有一个“首次出现”,即它出现的第一行。

我正在寻找一个表达式或公式来查找名称最新的首次出现。

举个例子来说明:

姓名
1 爱丽丝
2 查理
3 鲍勃
4 前夕
5 查理
6 大卫
7 鲍勃
8 爱丽丝
9 大卫
10 查理
11 前夕

David第一个出现的名字是第 6 行,其他所有名字都出现得更早(而且也更靠下,但我只对它们第一次出现感兴趣)。所以在这种情况下我想要的名字是David

我可能可以想到一个带有备用列和排序机制的过度设计的解决方案,但我觉得可能有一种更简单的方法来做到这一点。

答案1

对于 LibreOffice,请输入以下内容数组公式

=INDIRECT("B"&2+MAX(MATCH(B3:B13;B$3:B$13;0)))

为了避免使用数组公式,请改用 SUMPRODUCT。

=INDIRECT("B"&2+SUMPRODUCT(MAX(MATCH(B3:B13;B$3:B$13;0))))

答案2

对于 Excel,只需使用:

=XLOOKUP("*", UNIQUE(B1:B11), UNIQUE(B1:B11), , 2, -1)

它不会自动对列表进行排序,因此UNIQUE()列表中的最后一项也是最后一个“新名称的第一个实例”。然后使用XLOOKUP()查找(需要双引号字符)anything查找,"*"其中第 5 个参数为“2”,这样它就知道这是一个通配符,最后一个参数为“-1”,这样它就会从末尾查找,这样它就会找到最后一个这样的名称。

关键在于UNIQUE()生成列表,然后不对其进行排序。令人恼火的是(通常)它不会这样做。但对于你的情况来说,这是一件好事。

相关内容