目前正在使用Vlookup处理Excel工作表。 Sheet 1中的我的参考表有一个数据列表及其日期,其名称定义为ProjectEntry。例如:
-----------------------------------
| Project No | ID | Service Date |
|------------|----|---------------|
| 01 | A1 | 10/12/17 |
| 02 | B2 | 13/12/17 |
| 01 | A1 | 14/12/17 |
| 03 | C3 | 14/12/17 |
| 01 | A1 | 16/12/17 |
-----------------------------------
现在我在Sheet2中的Vlookup想要根据ID查找第二个最近的日期以获取最后的服务日期。例如,当我选择ID = 01时,Vlookup = 14/12/17。
对于Vlookup公式,我设法获得了第一个输入的服务日期(10/12/17):
=VLOOKUP(I7,ProjectEntry[[#All],[ID]:[Service Date]],2,FALSE)
但我不知道如何获得A1最近的第二个日期。我应该在配方中添加什么才能使其有效?
我们不是寻找“倒数第二匹配”,而是寻找“第二高的匹配”,在这种情况下,使用LARGE
函数的数组公式将返回您需要的内容。
如果您的示例数据在A2:C6
中排列如下:
然后你可以使用这个数组公式返回ID = A1
所在的“第二高日期”:
=LARGE(IF($B$2:$B$6="A1",$C$2:$C$6),2)
你的问题说你需要寻找ID = 01
但这些是两个不同的专栏。如果您需要查找“Project No = 01”,那么您的数组公式将为:
=LARGE(IF($A$2:$A$6="01",$C$2:$C$6),2)
...这是假设Project No
存储为文本。如果它实际上是一个数字(格式为前导零)那么你会使用:
=LARGE(IF($A$2:$A$6=1,$C$2:$C$6),2).
☆请记住,由于这些都是ARRAY FORMULAS,因此您需要在输入公式时指定;而不是使用ENTER,完成输入公式:
CTRL + SHIFT + ENTER
为了澄清此方法是否有效,如果数据的排列方式如下:
... ID = A1
(或Project No = 1
)应返回哪个值?