我正在尝试恢复与公司相关的分数,但我只想要最新的条目。如果没有分数,我希望单元格为空白。
公司 | 分数 | 日期 |
---|---|---|
A | 3.5 | 2020 年 2 月 1 日 |
A | 4.3 | 2019 年 1 月 16 日 |
在这种情况下,如果我想要公司 A 的分数,我希望它返回 3.5。如果我要查找公司 D,我希望单元格保持空白。
非常感谢您提前提供的任何帮助!!
答案1
答案2
使用XLOOKUP()
:
=XLOOKUP(F2, SORTBY(A2:A41, C2:C41), SORT(C2:C41), "", 0, -1)
SORTBY()
将公式中的查找数组 A2:A41 按 C 列(即您要从中获取值的列)排序。您对其进行排序是为了确保XLOOKUP()
从上到下搜索时查找值的最后一个实例是您想要的值,而不是随机条目。
您可以通过按返回值列(本例中为 C 列,即公式中的 C2:C41)按升序排序来确保这一点,即首先排序最小值,最后排序最大值。由于该列中有日期,而 Excel 将日期视为数字,因此这不会造成任何困难。
因此此时 Excel 会在已创建的虚拟数据范围的末尾看到每组查找范围值中具有最高值日期(最新日期)的数据范围。
XLOOKUP()
然后被告知从末尾到开头(从下到上)进行搜索,因此当它找到给定的查找值时,它会在公式的虚拟数据范围中的任何一组值中找到最后一个值。因此它将在虚拟结果列中返回相应的记录。由于这也已排序,只需SORT()
这一次,因为不需要更多,并且由于两次排序都是通过相同的“排序依据”列完成的,因此 C 列中的记录将与 A 列中的原始记录匹配:换句话说,两列中的成对行保持在一起,而不是变得混乱不堪。
因此,您创建了查找数组和结果数组的虚拟数据范围,其中的对保持匹配。您对这两个数组进行了排序,以便每个查找值与其相似值分组,从而确保由于按结果数组排序,最后一个值将是您想要的值。而且由于XLOOKUP()
可以从尾部到头部查找,因此可以找到它。
实际上,您可以按降序排序,对每组相同的查找值按日期从高到低的顺序排序。然后,XLOOKUP()
如果您有理由这样做,就可以从头到尾查找。