在 Calc 或 Excel 工作表中,我有一列包含一堆名称。每个名称可以出现一次或多次。
每个名称都有一个“第一次出现”,即它出现的第一行。
我正在寻找一个表达式或公式来查找最近第一次出现的名称。
一个例子来澄清:
姓名 | |
---|---|
1 | 爱丽丝 |
2 | 查理 |
3 | 鲍勃 |
4 | 前夕 |
5 | 查理 |
6 | 大卫 |
7 | 鲍勃 |
8 | 爱丽丝 |
9 | 大卫 |
10 | 查理 |
11 | 前夕 |
David
第一次出现是第 6 行,所有其他名称都出现得更早(也更往下,但我只对它们的第一次出现感兴趣)。所以在这种情况下,我想要的名字是David
.
我可能会想到一个带有备用列和排序机制的过度设计的解决方案,但我觉得可能有一种更简单的方法来做到这一点。
对于 LibreOffice,输入以下作为数组公式。
要避免使用数组公式,请改用 SUMPRODUCT。
对于 Excel,只需使用:
它不会自动对列表进行排序,因此最后一项来自列表中的最后
UNIQUE()
一个“新名称的第一个实例”。然后通过查找(需要双引号字符)XLOOKUP()
来查找,第 5 个参数为“2”,因此它知道这是一个通配符,“-1”为最后一个参数,因此它从末尾开始查找,因此它会找到最后一个这样的名字就行了。anything
"*"
这一切的关键是
UNIQUE()
生成列表,然后不对其进行排序。非常令人讨厌(通常)它没有。但是对于您的情况,这是一件好事。