所以,你要像=sign_off_time(1234569)
返回9:14
?这种事情很简单。但确切的实现将取决于您想要读取这些数据的位置以及您的工作表结构的其余部分。
基本上,我认为你遇到的基本问题是VLOOKUP()
需要索引位于查找数组的第一列,然后才能找到索引右侧的值。解决方案是使用INDEX()
和MATCH()
的组合代替VLOOKUP()
。 Here's a nice write up of how to use INDEX/MATCH and a comparison of this with VLOOKUP.
编辑:好的,你准备好了吗?在这里,我们去...如果工作表Sheet1看起来是这样的:
1234569 |John Smith
From To Dur. Activity
9:00 9:01 0:01 Open
8:55 10:15 1:20 Activity3
6:55 8:19 1:24 Activity4
9:01 9:14 0:13 Signon
4657915 Jane Doe
From To Dur. Activity
8:55 10:15 1:20 Open
6:55 16:33 9:38 Activity4
11:55 15:42 3:47 Signon
8461224 Bob Dulluth
(etc)
,那么这将在Sheet2中工作(或任何地方,真的)。它找到查找ID的行(例如,1234569),然后在下面找到'Signon'的第一个匹配项(不管下面有多远),然后查找该行的第二列(注销时间)。这将休息如果一个人的记录没有“登录”活动,它会发现下一个人的“登录”。
=INDEX(Sheet1!C2,MATCH("Signon",INDIRECT("Sheet1!R"&TEXT(MATCH(Sheet2!RC1,Sheet1!C1,0),"@")&"C4:R"&TEXT(ROWS(C3),"@")&"C4",FALSE),0)+MATCH(Sheet2!RC1,Sheet1!C1,0)-1)
式中的参考Sheet2!RC1
为查找ID,因此根据需要更改。
您的数据是否始终格式一致?具体来说,'1234569'总是4行,'Signon'左边3列? –
有时没有“登录”值进一步下降或反之亦然 – David