我正在生成一份报告但是我打了一个墙,其中有一个我需要从报告中提取的值。我试图做一个Vlookup和Hlookup的组合,但我无法让它工作。
所以我需要将2列的值拉回 Signon 值,然后根据第一列(1234569)中的值引用该值
任何帮助都是非常苛刻的
1234569 | John | Smith |
| | |
From | To | Dur. | Activity
9:00 | 9:01 | 0:01 | Open
9:01 | 9:14 | 0:13 | Signon
答案 0 :(得分:0)
所以你想要=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.
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,因此必要时进行更改。
答案 1 :(得分:0)
(在Excel 2010上测试)
=INDEX(OFFSET(INDEX($A:$D,MATCH($F$2,$A:$A,0),0),0,0,5,4),MATCH("Signon",$D:$D,0),MATCH("To",$3:$3,0))
假设:
从这里开始,你应该能够破译公式并根据需要进行调整。 VLOOKUP / HLOOKUP非常有限......通常最好花一点时间使用INDEX / MATCH在工作表中的其他位置查找数据。
希望这有帮助!
答案 2 :(得分:0)
更大的问题是你使用的是查询函数,比如MATCH INDEX,VLOOKUP和一个不是很好的表格数据形式的报告。
如果你能够在原始报告旁边添加一些额外的列,我建议尝试这样的事情:
关键是您需要某种方式在原始报告中标记新的“记录”。我猜测A列中唯一出现'From'的时间是指示一条新记录,但您可能需要一个不同的公式来获取F列的ID。
然后您的公式变为简单的=VLOOKUP("1234569Signon",$G:$H,2,false)