目前正在使用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最近的第二个日期。我应该在公式中添加什么才能使其有效?
答案 0 :(得分:2)
我们不是寻找“倒数第二场比赛”,而是寻找“第二高的比赛”,在这种情况下,数组公式使用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
)返回哪个值?
第二至最后(2016-12-17)
第二most-的最近强>? (二零一四年十二月十七日)